MySQL 错误处理例子[译]

 更新时间:2009年10月21日 22:05:57   作者:  
MySQL 错误处理例子,国外人写的,大家可以参考下。
from http://www.devshed.com/c/a/MySQL/Error-Handling-Examples/
Error Handler Examples
Here are some examples of handler declarations:
If any error condition arises (other than a NOT FOUND ), continue execution after setting l_error=1 :
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
SET l_error=1;
If any error condition arises (other than a NOT FOUND ), exit the current block or stored program after issuing a ROLLBACK statement and issuing an error message:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SELECT 'Error occurred – terminating';
END;
If MySQL error 1062 (duplicate key value) is encountered, continue execution after executing the SELECT statement (which generates a message for the calling program):
DECLARE CONTINUE HANDER FOR 106 2
SELECT 'Duplicate key in index';
If SQLSTATE 23000 (duplicate key value) is encountered, continue execution after executing the SELECT statement (which generates a message for the calling program):
DECLARE CONTINUE HANDER FOR SQLSTATE '23000'
SELECT 'Duplicate key in index';
When a cursor fetch or SQL retrieves no values, continue execution after setting l_done=1 :
DECLARE CONTINUE HANDLER FOR NOT
FOUND
SET l_done=1;
Same as the previous example, except specified using a SQLSTATE variable rather than a named condition:
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000 '
SET l_done=1;
Same as the previous two examples, except specified using a MySQL error code variable rather than a named condition or SQLSTATE variable:
DECLARE CONTINUE HANDLER FOR 1329
SET l_done=1;

错误处理例子
有几种错误处理的声明形式:
§ 如果任何错误(不是 NOT FOUND ) , 设置 l_error 为 1 后继续执行:
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
SET l_error=1;
§ 如果发生任何错误(不是 NOT FOUND), 执行 ROLLBACK和产生一条错误消息后退出当前块或存储过程。
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SELECT 'Error occurred – terminating';
END;
§ 如果 MySQL 1062错误 (重复的健值 )发生,执行 SELECT语句(向调用程序发一条消息)后继续执行
DECLARE CONTINUE HANDER FOR 106 2
SELECT 'Duplicate key in index';
§ 如果 SQLSTATE 2300错误 (重复的健值 )发生,执行 SELECT语句(向调用程序发一条消息)后继续执行
DECLARE CONTINUE HANDER FOR SQLSTATE '23000'
SELECT 'Duplicate key in index';
§ 当游标或者 SQL 选择语句没有返回值时,设置 l_done=1 后继续执行
DECLARE CONTINUE HANDLER FOR NOT
FOUND
SET l_done=1;
§ 此例除了用 SQLSTATE 变量而不是命名条件以外,跟前一个例子一样
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000 '
SET l_done=1;
§ 此例除了用 MySQL 的错误码变量而不是命名条件或者 SQLSTATE 变量以外,跟前两个例子一样
DECLARE CONTINUE HANDLER FOR 1329
SET l_done=1;

相关文章

  • CentOS7 通过YUM安装MySQL5.7的步骤详解

    CentOS7 通过YUM安装MySQL5.7的步骤详解

    这篇文章主要介绍了CentOS7 通过YUM安装MySQL5.7的步骤详解,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 一文了解MySQL的四大子查询

    一文了解MySQL的四大子查询

    本文主要介绍了一文了解MySQL的四大子查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • MySQL特殊函数使用技巧梳理

    MySQL特殊函数使用技巧梳理

    MySQL提供了各种特殊函数,它们可以帮助管理者查询复杂的数据,资料库包括字符串函数,数学函数,日期函数,程序函数等,下面这篇文章主要给大家介绍了关于MySQL特殊函数使用技巧的相关资料,需要的朋友可以参考下
    2023-05-05
  • MySQL自增ID用完的几种解决方案

    MySQL自增ID用完的几种解决方案

    MySQL的自增ID(AUTO_INCREMENT)用完之后,会出现重复ID的问题,那么如何解决这个问题呢,接下本文就给大家介绍MySQL自增ID用完的几种解决方案,需要的朋友可以参考下
    2023-07-07
  • MYSQL Binlog恢复误删数据库详解

    MYSQL Binlog恢复误删数据库详解

    MySQL一旦误删数据库之后恢复数据很麻烦,这里记录一下艰辛的恢复过程,这篇文章主要给大家介绍了关于如何利用MySQL的binlog恢复误删数据库的相关资料,需要的朋友可以参考下
    2022-11-11
  • Mysql使用函数json_extract处理Json类型数据的方法实例

    Mysql使用函数json_extract处理Json类型数据的方法实例

    在日常业务开发中通常mysql数据库中某个字段会需要存储json格式字符串,下面这篇文章主要给大家介绍了关于Mysql使用函数json_extract处理Json类型数据的相关资料,需要的朋友可以参考下
    2022-09-09
  • MySQL之使用UNION和UNION ALL合并两个或多个SELECT语句的结果集

    MySQL之使用UNION和UNION ALL合并两个或多个SELECT语句的结果集

    这篇文章主要介绍了MySQL之使用UNION和UNION ALL合并两个或多个SELECT语句的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • mysql的sql语句特殊处理语句总结(必看)

    mysql的sql语句特殊处理语句总结(必看)

    下面小编就为大家带来一篇mysql的sql语句特殊处理语句总结(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • MYSQL必知必会读书笔记第五章之排序检索数据

    MYSQL必知必会读书笔记第五章之排序检索数据

    本文给大家分享mysql必会必知读书笔记第五章之排序检索数据,小编认为非常具有参考价值,特此分享到脚本之家平台供大家参考
    2016-05-05
  • MySQL压力测试方法 如何使用mysqlslap测试MySQL的压力?

    MySQL压力测试方法 如何使用mysqlslap测试MySQL的压力?

    生产服务器用LANMP组合和用LAMP组合有段时间了,总体来说都很稳定。但出现过几次因为MYSQL并发太多而挂掉,一直想对MYSQL做压力测试。刚看到一篇介绍MYSQL压力测试的文章,确实不错,先收藏先吧
    2016-05-05

最新评论