20.2.10.2. 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错误代码也不被支持。

例如:

mysql> CREATE TABLE test.t (s1 int,primary key (s1));

Query OK, 0 rows affected (0.00 sec)

mysql> delimiter //

mysql> CREATE PROCEDURE handlerdemo ()

-> BEGIN

->   DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;

->   SET @x = 1;

->   INSERT INTO test.t VALUES (1);

->   SET @x = 2;

->   INSERT INTO test.t VALUES (1);

->   SET @x = 3;

-> END;

-> //

Query OK, 0 rows affected (0.00 sec)

mysql> CALL handlerdemo()//

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @x//

+------+

| @x   |

+------+

| 3    |

+------+

1 row in set (0.00 sec)

注 意到,@x是3,这表明MySQL被执行到程序的末尾。如果DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1; 这一行不在,第二个INSERT因PRIMARY KEY强制而失败之后,MySQL可能已经采取 默认(EXIT)路径,并且SELECT @x可能已经返回2。

mysql error handler_MySql错误处理(二) - Condition Handle相关推荐

  1. Linux mysql 登录 2002,Linux 下 Mysql error 2002 错误解决

    Linux 下 Mysql error 2002 错误解决 先查看 /etc/rc.d/init.d/mysqld status 查看mysql是否已经启动. 如果启动的的话,先将数据库停止   ki ...

  2. mysql error 1146错误解决办法

    mysql error 1146 错误出现原因有很多,网上的解决办法也是林林总总.我是通过网上的建表语句在本地建表报的这个错误,一一排查之后发现只是复制了语句中多余的注释部分,去掉之后问题解决.

  3. MYSQL ERROR CODE 错误编号的意义

    mysql error code(备忘) 转1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件 ...

  4. mysql error 1449_MySql错误:ERROR 1449 (HY000)

    笔者系统为 mac ,不知怎的,Mysql 竟然报如下错误: ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschem ...

  5. mysql1045错误解读_谈谈MYSQL ERROR 1045 错误的解决办法!

    N久没重做win7系统了,昨天重做了一下,之后就是配置环境.apache/PHP都很顺利,唯独mysql,装到最后提示: The security settings could not be appl ...

  6. MYSQL ERROR 1045 错误的解决办法 (转)

    Q:51Testing软件测试网n_p6[zBt 2h@ D$~1t NP3I0  ERROR 1045 (28000): Access denied for user'root'@'localhos ...

  7. Mysql Error 1142错误解决方法

    2019独角兽企业重金招聘Python工程师标准>>> Error:ALTER command denied to user 'xxxx'@'localhost' for table ...

  8. MySQL安装失败出现could not start the service mysql error:0 错误提示

    原因:以前在本机中安装过MySQL,卸载的时候没有卸载干净导致的,因为有的文件夹隐藏的很深. 解决步骤:1.MySQL服务停止. 控制面板---管理工具->服务    里面将MySQL的服务给停 ...

  9. 解决MySql ERROR 1698

    解决MySql ERROR 1698 错误:Access denied for user 'root'@'localhost' 一 问题描述 二 解决措施 一 问题描述 在Ubuntu服务器上安装My ...

最新文章

  1. 【Java学习笔记之二十五】初步认知Java内部类
  2. 人工智能到底是啥_人工智能的本质究竟是什么?
  3. webuploader 怎么在react中_另辟蹊径搭建阅读React源码调试环境支持所有React版本细分文件断点调试...
  4. SpringBoot自定义转换器(Convert)
  5. 页面闲置一段时间后,跳转
  6. ubuntu列出所有磁盘_列出Ubuntu上的磁盘空间使用情况
  7. 服务器的响应一直一直发送不过去,zeroRPC:在发送响应后继续运行进程
  8. 英特尔回应杨笠代言争议;天弘基金称已处理在支付宝上「无故扣款」问题;Eclipse 4.19 发布 | 极客头条...
  9. 我是如何将博客转成PDF的
  10. Hyperledger Fabric ./byfn.sh -m up -s couchdb Error peer0.org1 failed to join the channel
  11. Ubuntu16.04深度学习环境+个人桌面配置(CUDA10.1 + cudnn8.0.4 + pytorch1.7)
  12. PlatformIO中arduino框架下stm32编程实现原理
  13. pgsql数据替换替换换行符
  14. HTML吸引人眼球的网页,超吸引眼球的优秀网站设计欣赏
  15. OracleEBSAPP-XLA-95103错误(EventIDcannothaveaNULLvalue.)
  16. MP2459被完美替代内部集成有功率MOSFET管FS2459的60V0.5A降压IC
  17. linux程序提示killed的原因
  18. 初中计算机会考多少字合格,初中初三期中考试总分应该是多少
  19. Webpack是什么?Webpack有什么应用?
  20. 合肥工业大学计算机网络期中考试,合肥工业大学计算机网络2013年试卷及答案(终极版)...

热门文章

  1. 信号量使用例子_用信号量锁定:一个例子
  2. Cloud Foundry Java客户端–流事件
  3. Java EE 8 MVC:使用表单参数
  4. 使用所有对象通用的方法
  5. 在jOOQ之上构建的RESTful JDBC HTTP服务器
  6. 玩Java 8 – Lambda和并发
  7. Dropwizard:轻松的RESTful JSON HTTP Web服务
  8. 设计模式:模式或反模式,这就是问题
  9. WS-Security:使用BinarySecurityToken进行身份验证
  10. Spring MVC控制器的单元测试:配置