MySQL - DECLARE ... CONDITION 语句



在 MySQL 中使用存储过程时,如果发生异常或错误,则过程的执行会突然终止。为了避免这种情况,您需要在 MYSQL 中处理异常。

MySQL 提供了一个处理程序来处理存储过程中的异常。您可以通过使用 MySQL DECLARE ... HANDLER 语句声明处理程序来处理这些异常。

在声明处理程序时,您需要提供处理程序操作(CONTINUE 或 EXIT 或 UNDO)、条件值和语句。

DECLARE ... CONDITION 语句

使用 DECLARE ... CONDITION 语句,您可以将名称与所需的错误条件关联起来。稍后您可以在 DECLARE ... HANDLER 语句中使用它。

语法

以下是 DECLARE ... CONDITION 语句的语法:

DECLARE condition_name CONDITION FOR condition_value

其中,condition_name 是要与条件关联的名称,condition_value 是特定条件或条件类别。条件值可以是

  • 表示 MYSQL 错误代码的整数。
  • 表示 SQLSTATE 值的 5 个字符的字符串文字。

示例

以下过程接受两个数字并执行除法运算。如果除数为 0,则打印错误。在这里,我们定义了自己的处理程序条件以显示错误。

DELIMITER //
   CREATE PROCEDURE sample(IN dividend INT, IN divisor INT, OUT res double)
   BEGIN
      DECLARE dividedByZero CONDITION FOR SQLSTATE '22012';
      DECLARE CONTINUE HANDLER FOR dividedByZero
      RESIGNAL SET MESSAGE_TEXT = 'Error Denominator given is zero';
   IF divisor = 0 THEN
      SIGNAL dividedByZero;
   ELSE
      SET res:= dividend / divisor;
   END IF;
   END//
DELIMITER ;

如果您通过将第二个参数作为“0”调用上述过程,如下所示:

CALL sample(25, 0, @res);

将显示以下错误:

ERROR 1644 (22012): Error Denominator given is zero
广告

© . All rights reserved.