13.6.7.1 DECLARE ... CONDITION 声明

DECLARE condition_name CONDITION FOR condition_value

condition_value: {
    mysql_error_code
  | SQLSTATE [VALUE] sqlstate_value
}

声明...条件语句声明一个命名错误条件,将名称与需要特定处理的条件相关联。可以在随后的声明...处理程序语句中引用该名称(请参见第 13.6.7.2 节“ DECLARE ... HANDLER 语句”)。

条件声明必须出现在游标或处理程序声明之前。

声明...条件的* condition_value *table 示要与条件名称关联的特定条件或条件类别。它可以采用以下形式:

不要使用 MySQL 错误代码 0,因为这 table 示成功而不是错误情况。有关 MySQL 错误代码的列 table,请参见第 B.3.1 节“服务器错误消息参考”

不要使用以'00'开头的 SQLSTATE 值,因为这些值 table 示成功而不是错误情况。有关 SQLSTATE 值的列 table,请参见第 B.3.1 节“服务器错误消息参考”

SIGNAL或 use RESIGNAL语句中引用的条件名称必须与 SQLSTATE 值关联,而不是与 MySQL 错误代码关联。

使用条件名称可以帮助使存储的程序代码更清晰。例如,此处理程序适用于尝试删除不存在的 table 的情况,但是只有当您知道 1051 是“未知 table”的 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;
首页