跳到主要内容

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;