MySQL 8.4 发行说明
DECLARE condition_name CONDITION FOR condition_value
condition_value: {
mysql_error_code
| SQLSTATE [VALUE] sqlstate_value
}
DECLARE ... CONDITION
语句声明一个命名错误条件,将名称与需要特定处理的条件相关联。可以在后续的 DECLARE ... HANDLER
语句中引用该名称(请参阅 第 15.6.7.2 节,“DECLARE ... HANDLER 语句”)。
条件声明必须出现在游标或处理程序声明之前。
DECLARE ... CONDITION
的 condition_value
表示要与条件名称关联的特定条件或条件类。它可以采用以下形式:
在 SIGNAL
或 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;