Оператор обработки ошибок WHEN

ОПЕРАТОР ПРЕРЫВАНИЯ ПРОЦЕДУРЫ EXIT

ОПЕРАТОР ВОЗВРАТА ЗНАЧЕНИЙ ВЫХОДНЫХ ПАРАМЕТРОВ SUSPEND

Оператор SUSPEND предназначен для использования в хранимых процедурах (в триггерах SUSPEND неприменим), причем только в проце­дурах выбора, хотя синтаксически допустим и в выполнимых процедурах.

Оператор SUSPEND приостанавливает выполнение процедуры вы­бора, возвращает управление вызвавшей программе и возобновляет рабо­ту со следующей команды, когда выполнена очередная команда FETCH. SUSPEND возвращает вызвавшей программе результаты работы проце­дуры в выходных параметрах.

SUSPEND не должен использоваться в выполнимых процедурах, так как команды, следующие за ним, никогда не будут выполнены. В выпол­нимых процедурах следует использовать оператор явного выхода EXIT.

В процедуре выбора команда SUSPEND возвращает текущие значе­ния выходных параметров вызвавшей программе и продолжает выполне­ние. Если какой-либо выходной параметр не получил значение явно, то его содержимое непредсказуемо, что может привести к ошибкам, поэтому процедура должна обязательно присваивать значения всем выходным параметрам перед выполнением SUSPEND.

И в процедурах выбора и в выполнимых процедурах оператор EXIT передает управление на конец процедуры (завершающий END).

Действие, выполняемое по достижении конца процедуры, зависит от ее типа:

  • В процедуре выбора конечная команда END возвращает управле­ние вызвавшему ее приложению и устанавливает SQLCODE в 100; это указывает, что список найденных ею строк закончен.
  • В выполнимой процедуре конечная команда END возвращает управ­ление вызвавшему ее приложению с установкой значений выходных па­раметров, если они есть.

Сводка результатов выполнения операторов SUSPEND, EXIT и END приведена в таблице.

Тип процедуры SUSPEND EXIT END
Процедура вы­бора Приостанавливает работу до выполнения очередной команды FETCH и возвращает зна­чения выходных параметров Переходит к завершающему процедуру опера­тору END Возвращает управление вызвавшему ее приложению и устанавливает SQLCODE в 100 (конец потока)
Выполнимая процедура Переходит к завершающему процедуру опера­тору END. He рекомендуется Переходит к завершающему процедуру опера­тору END Возвращает значения и передает управление вы­звавшему ее приложению

Оператор WHEN... DO обеспечивает обработку возникших ошибок. Оператор применяется в хранимых процедурах и триггерах.

Синтаксис:

WHEN {LIST_<error> / ANY} DO <compound_statement>

< error>:: {EXCEPTION errcode}

exception_name / SQLCODE number / GDSCODE

Оператор WHEN должен быть последним в блоке BEGIN...END. С его помощью процедуры и триггеры могут обрабатывать ошибки трех типов:

  • Исключения, инициированные оператором EXCEPTION в данной процедуре или процедурах, прямо или косвенно вызванных дан­ной, а также исключения, инициированные в триггерах, вызван­ных в результате действий этих процедур.
  • SQL-ошибки, идентифицирующиеся SQLCODE.
  • Ошибки, идентифицирующиеся кодами ошибок InterBase. Конструкция ANY позволяет выполнять операторы обработки при возникновении любых ошибок перечисленных типов.

Сводка синтаксиса оператора WHEN приведена в таблице.

Параметр Описание
EXCEPTION exception_name Имя исключения (описанного в базе)
SQLCODE number Код ошибки – SQLCODE
GDSCODE errcode Код ошибки InterBase
ANY Обеспечивает вызов обработчика для любых перехватываемых ошибок
<compound_statement> Простой оператор или блок, осуществляющий обработку ошибок

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: