MySQL 8.3 Release Notes
DECLARE condition_name CONDITION FOR condition_value
condition_value: {
mysql_error_code
| SQLSTATE [VALUE] sqlstate_value
}
该 DECLARE ... CONDITION
语句声明了一个命名的错误条件,关联一个名称与需要特殊处理的条件。该名称可以在后续的 DECLARE ... HANDLER
语句中引用(见 第 15.6.7.2 节,“声明... 处理语句”)。
条件声明必须在游标或处理声明之前出现。
该 condition_value
对于 DECLARE ... CONDITION
指示要关联的特定条件或条件类别。它可以采取以下形式:
在 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;