当前位置: 首页 > news >正文

Atitit mysql 存储过程捕获所有异常,以及日志记录异常信息

Atitit mysql 存储过程捕获所有异常,以及日志记录异常信息

 

 

1.1. 异常的处理模式exit  continue undo模式 1

1.2. 捕获所有异常使用        DECLARE continue HANDLER FOR   sqlexception 1

1.3. 捕获特定异常使用HANDLER FOR  errorcode 2

1.4. 记录异常到日志表,获取异常代码和异常信息 2

1.5. 抛出自定义异常 3

2. 程序语言中捕获sql自定义抛出的异常 3

2.1. 代码 3

3. 集合的循环loop while repeat模式 4

3.1. 对集合的循环 使用loop模式最简单,whilerepeat都麻烦店。loop模式会自动处理集合结束。 4

3.2. While模式循环集合 。。需要定义一个 CONTINUE HANDLER FOR NOT FOUND 4

3.3. 参考资料 5

 

 

1.1. 异常的处理模式exit  continue undo模式

默认情况下,mysql异常机制是exit模式,出错直接退出。。

当当我们对一个集合循环做处理的时候,需要捕获异常,记录日志,继续执行。

 

 

 

 

 

1.2. 捕获所有异常使用        DECLARE continue HANDLER FOR   sqlexception  

 

相比js这一类语言的异常捕获,sql的异常捕获比较粗糙,只能捕获一个sp内的异常,不能精确到某几个代码行。。。

 

 

 

 

BEGIN

#Routine body goes here...

 DECLARE a  varchar(102)  ;   DECLARE code  varchar(102)  ;   DECLARE msg  varchar(102)  ;  

  DECLARE b varchar(100) ;  DECLARE n int ;

  ##catch

      DECLARE continue HANDLER FOR   sqlexception  

cat1:BEGIN  

GET DIAGNOSTICS CONDITION 1

code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;

 

SELECT code,msg;

#exit ALL

 

#leave cat1;

      END;  

set n=1;

 

 

 

  # while n<5 do  

lable:LOOP

       

call exThrow();

    set  n=n+1;

select  'in loop';

if n>3 THEN

 

select ' n>3 ';

leave lable;

end if;

 

  #end while;  

end loop;

 

END

 

1.3. 捕获特定异常使用HANDLER FOR  errorcode

1.4. 记录异常到日志表,获取异常代码和异常信息

 

GET DIAGNOSTICS CONDITION 1

code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;

 

SELECT code,msg;

 

 

1.5. 抛出自定义异常

#Routine body goes here...

   SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = "extag_1";  

 

2. 程序语言中捕获sql自定义抛出的异常

 

2.1. 代码

 

BEGIN

#Routine body goes here...

   SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = "extag_1";  

 

END

 

 

 

 

{

"@type":"java.lang.RuntimeException",

"cause":{

"@type":"java.sql.SQLException",

"errorCode":1644,

"localizedMessage":"extag_1 Query: call exThrow Parameters: []",

"message":"extag_1 Query: call exThrow Parameters: []",

"nextException":{

"errorCode":1644,

"localizedMessage":"extag_1",

"message":"extag_1",

"sQLState":"HY000",

"sQLState":"HY000",

"stackTrace":[{

"localizedMessage":"java.sql.SQLException: extag_1 Query: call exThrow Parameters: []",

"message":"java.sql.SQLException: extag_1 Query: call exThrow Parameters: []",

"stackTrace":[{

 

 

 

3. 集合的循环loop while repeat模式

3.1. 对集合的循环 使用loop模式最简单,whilerepeat都麻烦店。loop模式会自动处理集合结束。

BEGIN

#Routine body goes here...

DECLARE a  varchar(102)  ;  

DECLARE b varchar(100) ;  DECLARE n int ;   DECLARE rs_finished int ;

 

DECLARE cursor_name CURSOR FOR select id,identity from system_passport   order by id desc limit 3;  

OPEN cursor_name;  

lable:LOOP

     fetch  cursor_name into a,b;

     select a,b;    

 end LOOP;  

 

 

END

 

 

 

3.2. While模式循环集合 。。需要定义一个 CONTINUE HANDLER FOR NOT FOUND

 

 

 

BEGIN

#Routine body goes here...

DECLARE a  varchar(102)  ;  

DECLARE b varchar(100) ;  DECLARE n int ;   DECLARE rs_finished int ;

 

DECLARE cursor_name CURSOR FOR select id,identity from system_passport   order by id desc limit 5;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET rs_finished=1;

 

#set rs_finished=0;

set n=1;select 'open cursor bef';

OPEN cursor_name;

select 'open cursor after';

fetch  cursor_name into a,b;

 select a,b;

select  rs_finished;  # is null

  while  rs_finished is null  do  

 

     select a,b;

  fetch  cursor_name into a,b;

 end while;  

 

 

END

 

 

3.3. 参考资料

 

GET DIAGNOSTIC 语句 - 千里之行始于足下 - 博客频道 - CSDN.NET.html

Atitit mysql数据库自定义异常在java里面的捕获与处理推荐标准与规范

 

 

 

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher  kok  虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

 

 

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke交友协会会长  uke捕猎协会会长 Emir Uke部落首席大酋长,

 

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

 

uke 首席cto   软件部门总监 技术部副总监  研发部门总监主管  产品部副经理 项目部副经理   uke科技研究院院长 uke软件培训大师

 

uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

 Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长

 

uke终身教育学校副校长   Uke医院 与医学院方面的创始人

 uec学院校长, uecip图像处理机器视觉专业系主任   uke文档检索专业系主任

Uke图像处理与机器视觉学院首席院长

Uke 户外运动协会理事长  度假村首席大村长   uke出版社编辑总编

 

转载请注明来源:attilax的专栏  http://blog.csdn.net/attilax

http://www.cnblogs.com/attilax/

--Atiend  v9

 

相关文章:

  • Android新手引导View
  • [Fri 26 Jun 2015 ~ Thu 2 Jul 2015] Deep Learning in arxiv
  • 删除表A的记录时,Oracle 报错:“ORA-02292:违反完整约束条件(XXX.FKXXX)- 已找到子记录...
  • Redis部署及参数笔记
  • 关于二叉树的遍历梳理(递归、非递归、线索二叉树)
  • JSONObject和JSONArray区别及基本用法
  • Idea中使用git
  • 怎么爆加密过后的前端JS
  • 201521123016《Java程序设计》第14周学习总结
  • datenode节点超时时间设置,Hadoop启动不正常,HDFS冗余数据块的自动删除,NameNode安全模式问题,ntp时间服务同步,机架感知配置...
  • 航天科工发布中国首个工业互联网云平台
  • sql语句查询最新记录
  • Gurobi + CVX + Matlab
  • MooseFS源代码分析(二)
  • 积累各种好的链接
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 30天自制操作系统-2
  • AngularJS指令开发(1)——参数详解
  • Apache的80端口被占用以及访问时报错403
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java新版本的开发已正式进入轨道,版本号18.3
  • js ES6 求数组的交集,并集,还有差集
  • js中的正则表达式入门
  • LeetCode29.两数相除 JavaScript
  • mysql 5.6 原生Online DDL解析
  • orm2 中文文档 3.1 模型属性
  • PV统计优化设计
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • TypeScript实现数据结构(一)栈,队列,链表
  • vue学习系列(二)vue-cli
  • 汉诺塔算法
  • 简单实现一个textarea自适应高度
  • 排序算法之--选择排序
  • 批量截取pdf文件
  • 前端之React实战:创建跨平台的项目架构
  • 使用putty远程连接linux
  • 我与Jetbrains的这些年
  • 详解移动APP与web APP的区别
  • 运行时添加log4j2的appender
  • nb
  • Java数据解析之JSON
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (9)目标检测_SSD的原理
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二)windows配置JDK环境
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947