Spec-Zone .ru
спецификации, руководства, описания, API
|
DECLAREcondition_name
CONDITION FORcondition_value
condition_value
:mysql_error_code
| SQLSTATE [VALUE]sqlstate_value
DECLARE ... CONDITION
оператор объявляет именованное состояние ошибки, связывая
имя с условием, которое нуждается в определенной обработке. Имя может быть упомянуто в последующем DECLARE ... HANDLER
оператор (см. Раздел
13.6.7.2,"DECLARE ... HANDLER
Синтаксис").
Объявления условия должны появиться перед объявлениями обработчика или курсором.
condition_value
для DECLARE ... CONDITION
может быть код ошибки MySQL (число) или значение SQLSTATE
(5-символьный строковый литерал). Недопустимо использовать код ошибки MySQL 0 или значения SQLSTATE, которые
начинаются '00'
, потому что те указывают на успех, а не состояние ошибки. Для
списка кодов ошибки MySQL и значений SQLSTATE, см. Раздел C.3,
"Коды ошибки сервера и сообщения".
Используя имена для условий может помочь сделать сохраненный код программы более четким. Например, этот обработчик применяется к попыткам отбросить несуществующую таблицу, но это очевидно, только если Вы знаете значение кода ошибки MySQL 1051:
DECLARE CONTINUE HANDLER FOR 1051 BEGIN -- body of handler END;
Объявляя имя для условия, цель обработчика с большей готовностью замечается:
DECLARE no_such_table CONDITION FOR 1051;DECLARE CONTINUE HANDLER FOR no_such_table BEGIN -- body of handler END;
Вот именованное условие для того же самого условия, но основанный на соответствующем значении SQLSTATE, а не коде ошибки MySQL:
DECLARE no_such_table CONDITION FOR SQLSTATE '42S02';DECLARE CONTINUE HANDLER FOR no_such_table BEGIN -- body of handler END;
Имена условия, упомянутые в SIGNAL
или используйте RESIGNAL
операторы должны быть связаны со значениями SQLSTATE, не кодами ошибки
MySQL.