MySQL 8.4 Release Notes
15.6.7.1 声明条件语句
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 语句”)。
条件声明必须在游标或处理器声明之前出现。
condition_value
在DECLARE ... CONDITION
中表示要关联的特定条件或条件类别。它可以以以下形式出现:
在SIGNAL
或 RESIGNAL
语句中引用的条件名称必须与SQLSTATE值相关,而不是MySQL错误代码。
使用条件名称可以使存储程序代码更加清晰。例如,这个处理器应用于尝试删除不存在的表,但只有知道1051是MySQL错误代码“unknown table”才能明确:
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;