DECLARE ... CONDITION
DECLARE ... CONDITION 语句用于声明异常条件并为其命名,并将名称与异常条件所指定的处理程序相关联。
异常条件声明 必须出现在游标或处理程序声明之前。DECLARE ... CONDITION 语句的语法如下:
DECLARE condition_name CONDITION FOR condition_value
condition_value: {
mysql_error_code
| SQLSTATE [VALUE] sqlstate_value
}
condition_name 可以在之后的 DECLARE ... HANDLER 语句中引用。
condition_value 指示与异常条件名称相关联的指定条件或条件类别。它可以采取以下形式:
-
mysql_error_code:表示错误代码的整数字面量。需要注意的是,代码 0 表示成功而不是错误,所以不要使用 0 表示错误代码。 -
SQLSTATE [VALUE] sqlstate_value:表示SQLSTATE值的 5 个字符的字符串字面量。不要使用以 '00' 开头的SQLSTATE值,因为 '00' 值表示成功而不是错误情况。
有关错误码和 SQLSTATE 值的详细信息,请参见 seekdb 常见错误码。
在 SIGNAL 中或使用 RESIGNAL 语句的异常条件名称必须与 SQLSTATE 值相关联,而不是与错误代码相关联。
使用条件名称可以使存储的程序代码更清晰。基于 mysql_error_code 的异常条件示例如下:
DECLARE unknown_column CONDITION FOR 5217;
DECLARE CONTINUE HANDLER FOR unknown_column
BEGIN
-- 处理程序主体
END;
基于 SQLSTATE 值的异常条件示例如下:
DECLARE unknown_column CONDITION FOR SQLSTATE '42S22';
DECLARE CONTINUE HANDLER FOR unknown_column
BEGIN
-- 处理程序主体
END;