Синтаксис
Описание
CREATE EXCEPTION
ОПЕРАТОР ГЕНЕРАЦИИ ИСКЛЮЧЕНИЯ
ОПЕРАТОР ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ DECLARE
Оператор DECLARE применяется в хранимых процедурах и триггерах и размещается в начале их тела непосредственно перед скобкой BEGIN, за которой размещаются все исполнимые операторы. Все используемые переменные должны быть объявлены. Оператор объявления завершается «;». Одним оператором может быть объявлена только одна переменная, и объявления имеют смысл только внутри хранимой процедуры или триггера.
Синтаксис:
DECLARE VARIABLE var datatype;
Генерирует сообщение об ошибке (исключение). Применяется в хранимых процедурах и триггерах.
Синтаксис:
EXCEPTION name;
name – имя генерируемого исключения. Исключение с данным именем должно быть предварительно создано в базе командой CREATE EXCEPTION.
CREATE EXCEPTION создает исключительную ситуацию, определенную пользователем ошибку, с которой ассоциировано сообщение. Исключительные ситуации могут быть подняты в триггерах и сохраненных процедурах.
|
|
Исключительные ситуации глобальны для базы данных. То же самое сообщение или набор сообщений доступно всем сохраненным процедурам и триггерам в приложении. Для примера, база данных может иметь English и French версии тех же самых сообщений исключительных ситуаций и использовать соответствующий набор по необходимости.
Когда исключительная ситуация поднята триггером или сохраненной процедурой, она:
- Завершает триггер или процедуру, которой она вызвана и отменяет любые, выполненные ими действия (прямо или косвенно).
- Выводит сообщение об ошибке.
Исключительные ситуации могут быть отслежены и обработаны в сохраненной процедуре или триггере с помощью инструкции WHEN.
CREATE EXCEPTION name "<message>";
Аргумент | Описание | |
name | Имя, которое ассоциировано с сообщением исключительной ситуации. Должно быть уникальным среди имен исключительных ситуаций в базе данных. | |
"<message>" | Строка, заключенная в кавычки, содержащая буквенно-цифровые символы и знаки пунктуации. Максимальная длина: 78 символов. |
Следующая инструкция создает UNKNOWN_EMP_ID исключительную ситуацию:
CREATE EXCEPTION UNKNOWN_EMP_ID "Invalid employee number or project id.";
Следующий фрагмент из сохраненной процедуры поднимает, предварительно установленную исключительную ситуацию, когда SQLCODE принимает значение -530, которое является нарушением ограничения FOREIGN KEY:
...
WHEN SQLCODE -530 DO
EXCEPTION UNKNOWN_EMP_ID;
...