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