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;
MySQL 错误处理例子[译]
2019-11-04 15:08mysql教程网 Mysql
MySQL 错误处理例子,国外人写的,大家可以参考下。
延伸 · 阅读
- 2019-11-04mysql 日期和时间格式转换实现语句
- 2019-11-03php下mysql数据库操作类(改自discuz)
- 2019-11-03在VS2008中编译MYSQL5.1.48的方法
- 2019-11-03java实现mysql操作类分享 java连接mysql
- 2019-11-01redis+mysql+quartz 一种红包发送功能的实现
- 2019-11-013步搞定纯真IP数据导入到MySQL的方法详解
精彩推荐
- Mysql
在MySQL中用正则表达式替换数据库中的内容的方法
下面是转过来的,用于记录下,这个不是正则的初衷,只是用了REGEXP而已,正则的更灵活更方便...
- Mysql
MYSQL初学者命令行使用指南
其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。最好的...
- Mysql
spark rdd转dataframe 写入mysql的实例讲解
今天小编就为大家分享一篇spark rdd转dataframe 写入mysql的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...
- Mysql
mysql 存储过程的问题
最近我接触了一本php 与 mysql,老外写的一本书,书中有个tshirtshop网店代码,其中操作数据库的大多用的是mysql存储过程 ...
- Mysql
Mysql5.6修改root密码教程
今天小编就为大家分享一篇关于Mysql5.6修改root密码教程,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...
- Mysql
MySQL锁(表锁,行锁,共享锁,排它锁,间隙锁)使用详解
本文全面讲解了MySQL中锁包括表锁,行锁,共享锁,排它锁,间隙锁的详细使用方法...
- Mysql
mysql从执行.sql文件时处理\n换行的问题
后来注意到,在上面我们恢复数据的时候是在没有连接数据的状态下执行的。 ...
- Mysql
MySQL内存使用的查看方式详解
MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分),下面这篇文章主要给大家介绍了关于MySQL内存使用的查看方式,...