`
walksing
  • 浏览: 217028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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之前执行
发生错误的条件有:
· mysql错误代码
· ANSI-standard SQLSTATE code.
· 命名条件,可自定可使用系统内置的SQLEXCEPTION, SQLWARNING,和 NOT FOUND.

例:


//当错误代码为1062时将duplicate_key的值设为1,并继续执行当前任务

DECLARE CONTINUE HANDLER FOR 1062 SET duplicate_key=1;




//下面的跟上面的一样,只是使用的条件为ansi标准错误代码 DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET duplicate_key=1;

//当发生SQLEXCEPTION时,将l_error设为1,并继续 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET l_error=1;

小提示:

当你在mysql客户端执行命令并产生错误时,会得到mysql和ANSI的SQLSTATE code,如:
mysql> CALL nosuch_sp( );
ERROR 1305 (42000): PROCEDURE sqltune.nosuch_sp does not exist

附,常见错误号对照表

MySQL error code SQLSTATE code Error message

1011 HY000 Error on delete of '%s' (errn %d)
1021 HY000 Disk full (%s); waiting for someone to free some space . . .
1022 23000 Can't write; duplicate key in table '%s'
1027 HY000 '%s' is locked against change
1036 HY000 Table '%s' is read only
1048 23000 Column '%s' cannot be null
1062 23000 Duplicate entry '%s' for key %d
1099 HY000 Table '%s' was locked with a READ lock and can't be updated
1100 HY000 Table '%s' was not locked with LOCK TABLES
1104 42000 The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
1106 42000 Incorrect parameters to procedure '%s'
1114 HY000 The table '%s' is full
1150 HY000 Delayed insert thread couldn't get requested lock for table %s
1165 HY000 INSERT DELAYED can't be used with table '%s' because it is locked with LOCK TABLES
1242 21000 Subquery returns more than 1 row
1263 22004 Column set to default value; NULL supplied to NOT NULL column '%s' at row %ld
1264 22003 Out of range value adjusted for column '%s' at row %ld
1265 1000 Data truncated for column '%s' at row %ld
1312 0A000 SELECT in a stored program must have INTO
1317 70100 Query execution was interrupted
1319 42000 Undefined CONDITION: %s
1325 24000 Cursor is already open
1326 24000 Cursor is not open
1328 HY000 Incorrect number of FETCH variables
1329 2000 No data to FETCH
1336 42000 USE is not allowed in a stored program
1337 42000 Variable or condition declaration after cursor or handler declaration
1338 42000 Cursor declaration after handler declaration
1339 20000 Case not found for CASE statement
1348 HY000 Column '%s' is not updatable
1357 HY000 Can't drop a %s from within another stored routine
1358 HY000 GOTO is not allowed in a stored program handler
1362 HY000 Updating of %s row is not allowed in %s trigger
1363 HY000 There is no %s row in %s trigger
命名条件:

DECLARE condition_name CONDITION FOR {SQLSTATE sqlstate_code | MySQL_error_code};

例:
DECLARE foreign_key_error CONDITION FOR 1216; DECLARE CONTINUE HANDLER FOR foreign_key_error MySQL_statements;

优先级:

当同时使用MySQl错误码,标准SQLSTATE错误码,命名条件(SQLEXCEPTION)来定义错误处理时,其捕获顺序是(只可捕获一条错误):

MYSQL码->SQLSTATE->命名条件

作用域:

1、包括begni..end;内的语句

DECLARE CONTINUE HANDLER FOR 1048 SELECT 'Attempt to insert a null value';
BEGIN
INSERT INTO a VALUES (6,NULL);
END;
若a表第二字段定义为非空,则会触发1048错误

2、若错误处理在begin..end内定义,则在之外的语句不会触发错误发生

BEGIN
BEGIN
DECLARE CONTINUE HANDLER FOR 1216 select
'Foreign key constraint violated';
END;
INSERT INTO departments (department_name,manager_id,location)
VALUES ('Elbonian HR','Catbert','Catbertia');
END;
3、能够捕获其它存储过程抛出的错误

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/java000/archive/2008/04/29/2342467.aspx
分享到:
评论

相关推荐

    MySQL学习笔记.zip

    这份“MySQL学习笔记”将引导我们深入理解其核心概念和实用技能。 一、MySQL简介 MySQL是一个开源、免费的数据库系统,由瑞典的MySQL AB公司开发,后被Oracle公司收购。它的设计目标是速度、可移植性和简洁性,支持...

    超经典mysql dba 学习笔记.zip

    学习笔记会介绍复制的基本原理,设置主从复制的步骤,以及解决复制过程中遇到的问题,如binlog同步错误等。 六、安全与权限管理 了解如何创建和管理用户,设置权限,以及如何确保数据库的安全。这包括对root用户的...

    mySQL.zip_MYSQL_mysql 课件_学习笔记_笔记_资料

    这份"mySQL.zip_MYSQL_mysql 课件_学习笔记_笔记_资料"的压缩包内容包括了MySQL的培训课件和学习笔记,非常适合初学者进行数据库知识的入门学习。 51CTO下载-Mysql培训课件.pdf可能涵盖了以下MySQL的核心知识点: ...

    云笔记App-Android-客户端-服务端-Mysql-实验报告-安装指导.zip

    这篇实验报告涵盖了构建一个云笔记应用的全过程,主要涉及了Android客户端、服务端以及MySQL数据库的集成使用。这个项目是一个典型的移动应用开发实践,对于学习Java和Android开发的学生来说,具有很高的参考价值。 ...

    超经典mysql dba 学习笔记

    本学习笔记聚焦于MySQL这一广泛使用的开源关系型数据库管理系统,为有志成为DBA或者希望提升MySQL技能的读者提供了丰富的知识资源。以下是笔记中可能涵盖的主要知识点: 1. **MySQL简介**:MySQL的历史、特性、版本...

    大神写的MySQL DBA学习笔记

    这份“大神写的MySQL DBA学习笔记”无疑是深入理解和掌握MySQL技术的重要资源,尤其适合那些希望提升自己在数据库管理领域技能的人。笔记内容可能涵盖了从基础概念到高级实践的全方位知识,包括但不限于以下关键点:...

    MySQL学习笔记

    ### MySQL5.6 学习笔记关键知识点 #### 连接与断开MySQL服务器 - **连接MySQL服务器**: - 使用命令 `mysql –hhost –uuser –ppassword` 来连接MySQL服务器。 - 参数说明: - `host`: MySQL服务器的主机名或IP...

    Tomcat学习笔记 - 【使用JNDI数据源】

    【标题】"Tomcat学习笔记 - 使用JNDI数据源" 在Java应用服务器如Tomcat中,使用JNDI(Java Naming and Directory Interface)数据源是一种标准的方式,它允许我们集中管理和配置数据库连接,提高应用的可移植性和可...

    mysql视频完整学习笔记(刘道成)

    【登录与错误处理】 首次登录可能会遇到错误2,提示系统找不到文件,这通常是因为环境变量未正确设置。解决方法是检查`PATH`是否包含MySQL的bin目录。登录MySQL时,使用`mysql -u root -p`命令,然后输入密码。如果...

    MySQL笔记.rar

    这份"MySQL笔记.rar"压缩包文件包含了作者观看完整视频教程后的个人学习记录,旨在帮助读者掌握MySQL的基本操作以及一些性能优化技巧。 一、MySQL基础 1. 数据库与表的创建:MySQL中,数据库是存储数据的容器,...

    高性能mysql学习笔记

    ### 高性能MySQL学习笔记:查询性能优化与实践 #### 一、查询性能低下的原因与分析步骤 查询性能低下通常归因于访问了过多的数据。优化查询性能的关键在于识别并减少不必要的数据访问。具体可以通过以下两个步骤...

    MySQL学习笔记-初级操作

    这些只是MySQL初级操作的基础,随着学习的深入,你还将接触到视图、存储过程、触发器、用户权限管理等更高级的主题。通过实践和不断学习,你将能够熟练掌握MySQL,并在实际项目中发挥重要作用。

    mysql基础到进阶学习笔记

    【MySQL存储过程.xmind】可能是一个思维导图,详细梳理了存储过程的概念、创建、调用、参数传递以及在实际项目中的应用案例。 综上所述,这份学习资料全面覆盖了MySQL从基础到进阶的各个方面,对于希望深入学习和...

    mysql学习笔记.zip

    这份"mysql学习笔记.zip"包含的资源可能旨在帮助初学者或进阶者深入理解MySQL的各个方面。我们将从PPT和代码两个角度探讨其中可能涵盖的知识点。 首先,"ppt.zip"可能是一份关于MySQL教程的演示文稿,通常会包含...

    MySQL学习笔记常见问题以及解决方法

    在《MySQL学习笔记》文档中,通常会详细讲解这些概念和技巧,通过阅读和实践,初学者可以逐步解决遇到的问题,深入理解MySQL并提升数据库管理技能。记得在学习过程中,不断实践和总结经验,是掌握MySQL的关键。

    mysql学习笔记

    在本文中,我们将深入探讨MySQL的安装、启动、停止、卸载等基础知识,以及如何处理常见错误。 首先,安装MySQL涉及以下几个步骤: 1. **下载与安装**:可以从官方网站(http://www.mysql.com)获取适合你操作系统...

    MySQL学习笔记,记录MySQL学习中遇到的问题.zip

    以上只是MySQL学习笔记可能涵盖的部分内容,实际笔记中可能还包括更具体的问题,如特定错误的解决、特定场景的解决方案等。通过深入学习和实践,你将能够熟练掌握MySQL,并在实际项目中发挥其优势。

    个人MySQL学习笔记.zip

    个人MySQL学习笔记通常会涵盖以下几个核心知识点: 1. **安装与配置**:MySQL的安装过程包括下载安装包、设置环境变量、启动服务等步骤。在Windows或Linux操作系统上进行安装有所不同,需要了解各平台的配置方法。 ...

    高性能Mysql学习笔记.zip

    《高性能MySQL学习笔记》是一份全面探讨MySQL数据库优化与高效运用的资料集合,旨在帮助读者深入理解MySQL的内部机制,并掌握提升数据库性能的各种策略和技术。这份笔记可能包含了多个章节,涵盖了从基础概念到高级...

Global site tag (gtag.js) - Google Analytics