`

MySQL存储过程中捕获异常的方法

 
阅读更多

DECLARE处理程序的使用:

DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement

其中, 

handler_type的取值范围:CONTINUE | EXIT | UNDO 

condition_value的取值范围:SQLSTATE [VALUE] sqlstate_value | condition_name | SQLWARNING | NOT FOUND | SQLEXCEPTION | mysql_error_code

这个语句指定每个可以处理一个或多个条件的处理程序。如果产生一个或多个条件,指定的语句被执行。 对一个CONTINUE处理程序,当前子程序的执行在执行处理程序语句之后继续。对于EXIT处理程序,当前BEGIN...END复合语句的执行被终止。UNDO 处理程序类型语句还不被支持。

·   SQLWARNING是对所有以01开头的SQLSTATE代码的速记。

·    NOT FOUND是对所有以02开头的SQLSTATE代码的速记。

·    SQLEXCEPTION是对所有没有被SQLWARNING或NOT FOUND捕获的SQLSTATE代码的速记。

注:除了SQLSTATE值,MySQL错误代码也不被支持。

例子

 

/**
 *更新状态位,
 *操作成功返回0,
 *操作失败返回1.
 */ 
create procedure p_schedule_recover(p_id int,p_claId int ,out tip int )
begin 
      declare _err,_tip int default 0;
      declare continue handler for sqlexception, sqlwarning, not found set _err=1;        
      update `course_schedule` set status = 3,endTime = DATE_FORMAT(now(),'%Y-%m-%d') where classId = p_claId and status =1;
      update `course_schedule` set status = 1,time =DATE_FORMAT(now(),'%Y-%m-%d')  where id = p_id;
      if _err =1 then
         set _tip = 1;
      end if;    
      select _tip into tip;
end

 

 

分享到:
评论

相关推荐

    MySQL存储过程中一些基本的异常处理教程

    Mysql 支持异常处理,通过定义 CONTINUE/EXIT 异常处理的 HANDLER 来捕获 SQLWARNING/NOT FOUND/SQLEXCEPTION (警告 / 无数据 / 其他异常)。其中, FOR 后面可以改为 SQLWARNING, NOT FOUND, SQLEXCEPTION 来指示...

    mysql存储过程中的异常处理解析

    主要为大家详细介绍了mysql存储过程中的异常处理,感兴趣的小伙伴们可以参考一下

    mySQL事务处理

    //捕获执行SQL语句组中的异常 } catch (SQLException e) { try { System.out.println("事务执行失败,进行回滚!\n"); con.rollback(); // 若前面某条语句出现异常时,进行回滚,取消前面执行的所有操作 ...

    php网络开发完全手册

    10.2.3 异常捕获语句try-catch 156 10.2.4 异常处理函数设置set_exception 10.2.4 _handler 157 10.2.5 完整的异常信息 158 10.3 扩展的异常处理类 160 10.4 异常的传递与重掷 163 10.5 小结 165 第11章 PHP与表单 ...

    hello-devops

    你好发展 请仔细阅读这些说明。 该项目有2个应用程序: hello-python是一个包含表单的... 如果需要进行任何更改以帮助调试(例如添加日志或捕获异常),我们建议您保留它们,以便我们了解您的想法。 如果您对Python

    java初学者必看

    12.4.1 异常捕获处理语句块 12.4.2 必须执行语句块 12.4.3 必须执行语句的意外 12.5 异常抛出 12.5.1 异常抛出概念 12.5.2 throw 12.5.3 throws 12.5.4 抛出异常 12.6 自定义异常 12.6.1 创建用户自定义...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例170 方法中抛出异常 218 实例171 方法上抛出异常 219 实例172 自定义异常类 220 实例173 捕获单个异常 221 实例174 捕获多个异常 222 第8章 枚举与泛型的应用 223 8.1 枚举使用的简介 224 实例175 查看枚举类型...

    疯狂JAVA讲义

    10.2.1 使用try...catch捕获异常 359 10.2.2 异常类的继承体系 360 10.2.3 访问异常信息 363 10.2.4 使用finally回收资源 364 10.2.5 异常处理的嵌套 367 10.3 Checked异常和Runtime异常体系 367 10.3.1 使用...

    企业级云灾备软件-英方云 v5.6.rar

    由于用云中心取代了传统的灾备中心,这使得其安全性和数据的一致性在整个业务保护过程中显得至关重要,这也常常是用户使用云灾备的主要顾虑之一,而英方云通过多种方式解决了这一问题。在数据安全性方面,在数据传输...

    python项目基于图像识别的仪表实时监控系统.zip

    - 数据库技术:如SQLite、MySQL、PostgreSQL或MongoDB,用于存储历史读数和用户设置。 部署方式可能包括: - 本地部署:在工业现场的控制室内配置环境运行系统。 - 云服务部署:将系统部署到云平台,如AWS、Azure...

    亲戚

    引发sql执行异常,便于第三方框架进行异常捕获。0.0.7修复更新时关联关联的存储错误;修复Query.getResultList方法start参数为0时查询结果问题。0.0.8更新自述文件0.0.9修改删除返回值说明;修复insert后返回实体...

    基于JAVA的网络通讯系统设计与实现.rar

    数据存储:可以使用关系型数据库如MySQL或非关系型数据库如MongoDB来存储用户信息、消息记录等数据。 安全性考虑: 数据加密:对用户登录、消息传输等敏感信息进行加密处理,保障数据的机密性和完整性。 身份认证:...

    基于java的聊天系统的设计于实现.rar

    数据存储:可以使用关系型数据库如MySQL或非关系型数据库如MongoDB来存储用户信息、消息记录等数据。 安全性考虑: 数据加密:对用户登录、消息传输等敏感信息进行加密处理,保障数据的机密性和完整性。 身份认证:...

    lucinda-framework:Lucinda Framework 3.0

    在之上将错误或未捕获的异常处理到报告和响应中 模板HTML视图使用扩展HTML标准的语言,类似于Java的EL&JSTL 将消息/异常记录到存储介质 连接到SQL供应商(例如:MySQL),执行查询并解析PDO之上的结果 连接到...

    springboot-ng:springboot+angular -- 17年5月停更

    9.记录登录者信息,存储在mongodb中.(使用到百度地图api中的IP精确定位) 已包含工具类: 1.ID生成器 2.日期处理 3.短信验证码发送(使用的是云片网络) 4.token生成器 5.md5加密 数据库: mysql(放在阿里云,系统:...

    数据库安全审计系统介绍.pptx

    数据库信息泄露风险分析 数据非法修改 黑客 第三方人员 公共帐号 系统用户 数据破坏 DBA或超级用户 敏感数据 数据盗取 未授权使用 真实性 完整性 保密性 信息泄露:产生->传输->使用全过程 ? 数据库安全审计系统...

Global site tag (gtag.js) - Google Analytics