MySQL5的异常处理

http://tech.ddvip.com   2006年04月07日    社区交流

本文详细介绍MySQL5的异常处理

  END;//

  上面就是我们的程序。这里的第一个语句DECLARE EXIT HANDLER是用来处理异常的。意思是如果错误1215发生了,这个程序将会在错误记录表中插入一行。EXIT意思是当动作成功提交后退出这个复合语句。

  5. Sample Problem: Log Of Errors

  CALL p22 (5) //

  调用这个存储过程会失败,这很正常,因为5值并没有在主键表中出现。但是没有错误信息返回因为出错处理已经包含在过程中了。t3表中没有增加任何东西,但是error_log表中记录下了一些信息,这就告诉我们INSERT into table t3动作失败。

  DECLARE HANDLER syntax 声明异常处理的语法

  DECLARE

  { EXIT | CONTINUE }

  HANDLER FOR

  { error-number | { SQLSTATE error-string } | condition }

  SQL statement

  上面就是错误处理的用法,也就是一段当程序出错后自动触发的代码。MySQL允许两种处理器,一种是EXIT处理,我们刚才所用的就是这种。另一种就是我们将要演示的,CONTINUE处理,它跟EXIT处理类似,不同在于它执行后,原主程序仍然继续运行,那么这个复合语句就没有出口了。

  1. DECLARE CONTINUE HANDLER example CONTINUE处理例子

  CREATE TABLE t4 (s1 int,primary key(s1));//

  CREATE PROCEDURE p23 ()

  BEGIN

  DECLARE CONTINUE HANDLER

  FOR SQLSTATE '23000' SET @x2 = 1;

  SET @x = 1;

  INSERT INTO t4 VALUES (1);

  SET @x = 2;

  INSERT INTO t4 VALUES (1);

  SET @x = 3;

  END;//

  这是MySQL参考手册上的CONTINUE处理的例子,这个例子十分好,所以我把它拷贝到这里。通过这个例子我们可以看出CONTINUE处理是如何工作的。

责编:豆豆技术应用

正在加载评论...