Доступные версии документации

Контроль ошибочных ситуаций

Спецификация ошибочных ситуаций и действий по их обработке

Назначение

Управление обработкой ошибочных ситуаций при выполнении встроенных SQL-запросов.

Синтаксис

 
<управление ошибочной ситуацией>::=
EXEC SQL WHENEVER <ситуация> THEN <действие>;
<ситуация>::= {SQLERROR | SQLWARNING | NOT FOUND}
<действие>::= {STOP | CONTINUE | GOTO <метка>
| CALL <процедура-обработчик>}

Описание

  1. <Метка> – метка оператора основного языка, куда необходимо перейти в случае ошибки. Директива WHENEVER является декларативной. Она управляет дальнейшей работой программы в случае выявления ошибки при выполнении SQL-запроса. Директива WHENEVER относится ко всем выполняемым операторам встроенного SQL, встретившимся после нее в тексте программы до следующей директивы WHENEVER.

  2. Все ошибочные ситуации можно разделить на 3 категории:

    • SQLERROR (ошибка) – СУБД ЛИНТЕР не может выполнить оператор;

    • SQLWARNING (предупреждение) – сомнительные преобразования типов данных и т.п.;

    • NOT FOUND (данные не найдены) – не найдено ни одной записи, удовлетворяющей заданному условию.

  3. Действия при возникновении подобных ситуаций могут быть следующими:

    • STOP – завершение выполнения программы;

    • CONTINUE – ошибочная ситуация игнорируется, выполнение программы продолжается;

    • GOTO – переход на заданную метку;

    • CALL – вызов заданной <процедуры-обработчика>. <Процедура-обработчик> – это функция основного языка, которая не должна иметь аргументов.

Примечание

Если директива WHENEVER в программе отсутствует либо объявлена не в начале программы, по умолчанию (до первого объявления WHENEVER) действует режим CONTINUE для всех возникающих ошибочных ситуаций, т. е. никакая обработка ошибки не производится. В данном случае пользовательская программа может выполнять самостоятельную обработку ошибок, специфическую для каждого конкретного SQL-запроса, используя значение переменных ErrPCI_ и CntPCI_.

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter