mysql写存贮过程,有异常处理语句吗?即如果执行出错,就执行错误处理代码?
-------------------
VB中有一种容错处理语句:
on error goto errhandler
  --这里是代码
errhandler:
  --下面是错误处理代码我想问,写sql存贮过程时,如何实现这种功能呢?即只要出现错误,就转到一段错误处理程序那里?

解决方案 »

  1.   

    12.8.4.2. DECLARE for Handlers
    DECLARE handler_type HANDLER
        FOR condition_value [, condition_value] ...
        statementhandler_type:
        CONTINUE
      | EXIT
      | UNDOcondition_value:
        SQLSTATE [VALUE] sqlstate_value
      | condition_name
      | SQLWARNING
      | NOT FOUND
      | SQLEXCEPTION
      | mysql_error_codemysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));
    Query OK, 0 rows affected (0.00 sec)mysql> delimiter //mysql> CREATE PROCEDURE handlerdemo ()
        -> BEGIN
        ->   DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;
        ->   SET @x = 1;
        ->   INSERT INTO test.t VALUES (1);
        ->   SET @x = 2;
        ->   INSERT INTO test.t VALUES (1);
        ->   SET @x = 3;
        -> END;
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql> CALL handlerdemo()//
    Query OK, 0 rows affected (0.00 sec)mysql> SELECT @x//
        +------+
        | @x   |
        +------+
        | 3    |
        +------+
        1 row in set (0.00 sec)CREATE PROCEDURE p ()
    BEGIN
      DECLARE i INT DEFAULT 3;
      retry:
        REPEAT
          BEGIN
            DECLARE CONTINUE HANDLER FOR SQLWARNING
              BEGIN
                ITERATE retry;  # illegal
              END;
          END;
          IF i < 0 THEN
            LEAVE retry;        # legal
          END IF;
          SET i = i - 1;
        UNTIL FALSE END REPEAT;
    END;
      

  2.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  3.   

    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html