1.异常处理语法
DECLARE handler_type HANDLER FOR condition_value [,...] sp_statement
2.参数说明
(1) handler_type: CONTINUE|EXITIUNDO
handler_type 为错误处理方式,参数为3个值之一;
CONTINUE 表示遇到错误不处理,继续执行;
EXIT 表示遇到错误时马上退出;
UNDO 表示遇到错误后撤回之前的操作,MySQL暂不支持回滚操作;
(2) condition_value: SQLSTATE [VALUE] sqlstate_value l condition_name| SQLWARNING | NOT FOUND | SQLEXCEPTION | mysql_error_code
condition_value 表示错误类型;
SQLSTATE [VALUE]sqlstate_value 为包含5个字符的字符串错误值;
condition_name 表示DECLARE CONDITION定义的错误条件名称;
SQLWARNING匹配所有以01开头的SQLSTATE错误代码;
NOT FOUND 匹配所有以02开头的SQLSTATE错误代码;
SQLEXCEPTION匹配所有没有被SQLWARNING 或NOT FOUND 捕获的SQLSTATE错误代码;
mysql_error_code 匹配数值类型错误代码;
3.异常捕获方法
(1)方法一:捕获sqlstate_value异常
这种方法是捕获sqlstate_value值。如果遇到sqlstate_value值为“42502",执行CONTINUE 操作,并输出"NO_SUCH_TABLE"信息
DECLARE CONTINUE HANDLER FOR SQLSTATE '425O2' SET @info=’NO_SUCH_TABLE';
(2)方法二:捕获mysql_error_code 异常
这种方法是捕获mysql_error_code 值。如果遇到mysql_error_code值为1146;
执行CONTINUE 操作,并输出"NO SUCH TABLE"信息;
DECLARE CONTINUE HANDLER FOR 1146 SET @info=’NO_SUCH_TABLE';
(3)方法三:先定义条件,然后捕获异常
DECLARE no_such_table CONDITION FOR 1146;
DECLARE CONTINUE HANDLER FOR NO_SUCH_TABLE SET @info=’NO_SUCH_TABLE':
(4)方法四:使用SQLWARNING捕装异常
DECLARE EXIT HANDLER FOR SQLWARNING SET @info=’ERROR’;
(5)方法五:使用NOT FOUND 捕获异常
DECLARE EXIT HANDLER FOR NOT FOUND SET @info=’NO_SUCH_TABLE':
(6)方法六:使用 SQLEXCEPTION 装异常
DECLAR EXIT HANDLER FOR SQLEXCEPTION SET@info=’ERROR’';