加入收藏 | 设为首页 | 会员中心 | 我要投稿 91站长网 (https://www.91zhanzhang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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
 MySQL异常处理的举例分析
说明:
· 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站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读