`

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存储过程中实现异常处理,以捕获并处理可能出现的错误。 首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个...

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

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

    MySQL存储过程.pdf

    MySQL存储过程 MySQL存储过程(Stored Procedure)是一种复杂的数据库对象,允许用户将多个SQL语句组合成一个单一的执行单元,以提高数据库的性能和可维护性。下面是 MySQL 存储过程的相关知识点: 存储过程的定义...

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

    MySQL存储过程中的异常处理是程序设计中的重要环节,它允许开发者在遇到错误或异常时能够进行适当的响应,而不是让程序崩溃。在MySQL中,异常处理主要是通过声明和使用HANDLER来实现的。以下是对这一主题的详细解释...

    MySQL存储过程学习资料

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预定义一组SQL语句,并将其封装成一个可重复使用的单元。这个单元可以包含多种SQL操作,如SELECT、INSERT、UPDATE、DELETE等,以及流程控制语句,如IF-...

    MySQL存储过程.rar

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一组SQL语句并封装成一个可重复使用的对象。这种技术在大型企业级应用中非常常见,因为它能提高性能、减少网络通信,并且便于代码管理和维护。在...

    操作c#mysql 存储过程

    根据给定的文件标题、描述、标签以及部分内容,我们可以总结并深入探讨以下关于C#与MySQL存储过程操作的关键知识点: ### 一、C#连接MySQL数据库 在C#中,要实现对MySQL数据库的连接与操作,首先需要引用MySQL....

    MySQL5新特性之存储过程MySQL5新特性之存储过程

    4. **异常处理**:通过`DECLARE`、`BEGIN...END`和`HANDLER`语句,MySQL5提供了错误处理机制,可以在存储过程中捕获并处理异常,增强了程序的健壮性。 5. **动态SQL**:MySQL5支持在存储过程中执行动态生成的SQL...

    MySQL 存储过程经典教程.pdf

    - MySQL存储过程支持错误处理机制,可以通过定义`DECLARE CONTINUE HANDLER`来捕获特定类型的错误,并指定相应的处理动作。 - 错误处理可以增强存储过程的健壮性,确保即使发生错误也能正常运行。 #### 九、游标 -...

    [MySQL] 存储过程错误异常处理例子

    总结来说,`DECLARE EXIT HANDLER FOR SQLEXCEPTION`是MySQL存储过程中处理错误和异常的关键工具。它使得我们能够优雅地处理可能出现的问题,确保即使在异常情况下,程序也能按照预定的方式进行操作,从而提升整个...

    MYSQL存储过程详解

    MySQL提供了强大的错误处理机制,可以通过定义错误处理器来捕获和处理存储过程中发生的异常情况。 #### 游标(Cursors) 游标允许存储过程逐行处理查询结果集。这对于需要逐行处理大量数据的应用场景非常有用。 ###...

    IBatis查删改查与调用存储过程 mysql数据库

    通过这篇文章,读者可以了解到如何在Java项目中使用IBatis进行数据库操作,并掌握调用MySQL存储过程的方法。作者很可能会提供详细的步骤、示例代码和实战案例,帮助读者更好地理解和应用这些技术。由于没有具体的...

    Java调用MySQL存储过程并获得返回值的方法

    在Java编程中,调用MySQL存储过程并获取返回值是一项常见的任务,这有助于优化数据库操作,提高代码的可维护性和性能。以下是如何使用Java来执行这个操作的详细步骤和相关知识点: 1. **连接数据库**: 在Java中,...

    MySQL5.0存储过程

    MySQL5.0存储过程是数据库管理系统MySQL中的一个重要特性,它允许开发者定义一组SQL语句,形成一个可重复使用的代码块,以实现特定的功能。在数据库系统中,存储过程可以提高性能,减少网络流量,增强安全性,并提供...

    Python简单调用MySQL存储过程并获得返回值的方法

    如果在执行过程中出现错误,`except`块会捕获`MySQLdb.Error`异常,并打印出具体的错误信息。 关于存储过程,它们是一组预编译的SQL语句,可以封装成一个单元,以便重复使用。在MySQL中,可以使用`CREATE PROCEDURE...

    mysql存储过程

    【MySQL存储过程】是数据库管理系统中的一个重要特性,它允许用户预先定义一组SQL语句和控制结构,形成一个可重用的程序单元。存储过程在创建后存储在数据库中,可以通过名称调用,减少了重复编码的工作量,提高了...

Global site tag (gtag.js) - Google Analytics