DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,NOT FOUND,SQLWARNING SET flag=500;
1、遇到异常时有continue(继续执行)和exit(退出)两种;
2、捕捉的异常
(1)捕捉单个异常如'23000'duplicate重复主键异常;
(2)某一类异常SQLWARNING:以01开头的异常代码;NOT FOUND:以02开头的异常代 码;SQLEXCEPTION:没有被SQLWARNING或NOT FOUND捕获的异常(sqlstate)
(3)多种异常,三个一起写
3、如果为continue,捕获到这个异常后,会执行set flag=500这个存储过程,这时可以通过判断flag的值来判断是否发 生了异常,若发生则rollback.若为事务(transaction),则rollback事务中所执行的操作,若不是事务,则rollback 最近的一条。
4、例子:
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,NOT FOUND,SQLWARNING SET flag=500;
START TRANSACTION;
执行的操作
IF flag=500 THEN ROLLBACK;
ELSE SET flag=200; COMMIT; //提交
END IF;