MySQL异常处理的举例分析
发布时间:2021-12-26 13:00:26 所属栏目:MySql教程 来源:互联网
导读:这篇文章给大家分享的是有关MySQL异常处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 针对存储过程 、触发器或函数内部语句可能发生的错误或警告信息,需要进行相关异常或称 例外的捕捉,然后作出相应的处理,异
这篇文章给大家分享的是有关MySQL异常处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 针对存储过程 、触发器或函数内部语句可能发生的错误或警告信息,需要进行相关异常或称 例外的捕捉,然后作出相应的处理,异常处理的方式如下: DECLARE {CONTINUE | EXIT} HANDLER FOR {SQLSTATE sqlstate_code| MySQL error code| condition_name} handler_actions ![]() 说明: · Handler type (CONTINUE, EXIT) :处理类型,继续或退出 · Handler condition (SQLSTATE, MySQL error code, named condition) :触发条件 · Hander actions(错误触发的操作) 注意:a、 exit只退出当前的block。 b、 如果定义了handler_action,会在continue或exit之前执行。 作用域: begni..end内,哪果错误处理定义在begin ... end内,则在该begin...end之外的错误不会被捕获。 它能够捕获其它储过程的错误。 关于作用域,以如下过程为例 drop table nums; drop procedure pCreateNums; CREATE TABLE nums ( id INT NOT NULL PRIMARY KEY, b INT NOT NULL ); delimiter $$ create procedure pCreateNums(cnt int) begin begin declare continue handler for sqlexception rollback; start transaction; insert into nums(id,b) values(cnt+1,1); insert into nums(id,b) values(cnt,null); insert into nums(id,b) values(cnt+2,1); commit; end; insert into nums values(100,100); select * from nums; end $$ delimiter ; call pCreateNums(10); nums表b字段为非空. 内部的begin end 由一个异常处理的定义,类型为continue 那么在执行到下面sql的时候 如果异常处理为Exit类型,则内层begin end 块回滚,内层其余SQL不再执行, 但是外层的SQL不受影响.因为异常处理是定义在内层的. 这就是异常处理的作用域. 结果如下: mysql> call pCreateNums(10); +-----+-----+ | id | b | +-----+-----+ | 100 | 100 | +-----+-----+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.01 sec) 当然,如果异常处理定义在外层。他的作用域就是整个过程. 感谢各位的阅读!关于“MySQL异常处理的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧! (编辑:91站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |