DECLARE condition_name CONDITION FOR condition_value
condition_value: {
mysql_error_code
| SQLSTATE [VALUE] sqlstate_value
}
该DECLARE
... CONDITION
语句声明了一个命名的错误条件,将名称与需要特定处理的条件相关联。该名称可以在后续
DECLARE ...
HANDLER
语句中引用(请参阅
第 13.6.7.2 节,“DECLARE ... HANDLER 语句”)。
条件声明必须出现在游标或处理程序声明之前。
condition_value
for
DECLARE ...
CONDITION
指示与条件名称关联的特定条件或条件类别
。它可以采用以下形式:
SIGNAL
或 use
语句
中引用的条件名称
RESIGNAL
必须与 SQLSTATE 值关联,而不是 MySQL 错误代码。
为条件使用名称有助于使存储的程序代码更清晰。例如,此处理程序适用于删除不存在的表的尝试,但只有当您知道 1051 是“未知表”的 MySQL 错误代码时,这才会显而易见:
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;