文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  DECLARE ... CONDITION 语句

15.6.7.1 DECLARE ... CONDITION 语句

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 语句”)。

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

DECLARE ... CONDITIONcondition_value 表示要与条件名称关联的特定条件或条件类。它可以采用以下形式:

  • mysql_error_code:表示 MySQL 错误代码的整数文字。

    不要使用 MySQL 错误代码 0,因为它表示成功而不是错误条件。有关 MySQL 错误代码的列表,请参阅 服务器错误消息参考

  • SQLSTATE [VALUE] sqlstate_value:表示 SQLSTATE 值的 5 字符字符串文字。

    不要使用以 '00' 开头的 SQLSTATE 值,因为它们表示成功而不是错误条件。有关 SQLSTATE 值的列表,请参阅 服务器错误消息参考

SIGNALRESIGNAL 语句中引用的条件名称必须与 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;