mysql 程序_MySQL定义处理程序

定义完条件以后,需要定义针对此条件的处理程序

MysqL中,使用DECLARE语句定义处理程序

语法格式

DECLARE handler_type HANDLER FOR condition_value [,……] sp_statement

Handler_type:

CONTINUE | EXIT | UNDO

Condition_value:

| condition_name

| sqlWARNING

| NOT FOUND

| sqlEXCEPTION

| MysqL_error_code

参数说明

Handler_type,为错误处理方式,参数取值有三个

CONTINUE,表示遇到错误不处理,继续执行

EXIT,表示遇到错误马上退出

UNDO,表示遇到错误后,撤销之前的操作,MysqL中,暂时不支持这样的操作

Sp_statement,参数为程序语句段,表示在遇到定义的错误时,需要执行的存储过程

Condition_value,表示错误类型

Condition_value取值如下

sqlSTATE[VALUE] sqlstate_value,包含5个字符的字符串错误值

Condition_name,表示DECLARE CONDITION定义的错误条件名称

sqlWARNING,匹配所有以01开头的sqlSTATE错误代码

NOT FOUND,匹配所有以02开头的sqlSTATE错误代码

sqlEXCEPTION,匹配所有没有被sqlWARNING或NOT FOUND捕获的sqlSTATE错误代码

MysqL_error_code,匹配数值类型错误代码

定义处理程序的几种方式

方法一,捕获sqlstate_value

DECLARE CONTINUE HANDLER FOR sqlSTATE ‘42S02’ SET @info=’NO_SUCH_TABLE’;

方法二,捕获MysqL_error_code

DECLARE CONTINUE HANDLER FOR 1146 SET @info=’NO_SUCH_TABLE’;

方法三,先定义条件,然后调用

DECLARE no_such_table CONDITION FOR 1146;

DECLARE CONTINUE HANDLER FOR NO_SUCH_TABLE SET @info=’ERROR’;

方法四,使用sqlWARNING

DECLARE EXIT HANDLER FOR sqlWARNING SET @info=’ERROR’;

方法五,使用NOT FOUND

DECLARE EXIT HANDLER FOR NOT FOUND SET @info=’NO_SUCH_TABLE’;

方法六,使用sqlEXCEPTION

DECLARE EXIT HANDLER FOR sqlEXCEPTION SET @info=’ERROR’;

解释说明

第一种方法

捕获sqlstate_value值

如果,遇到sqlstate_value值为’42S02’,则执行CONTINUE操作,并且,输出”NO_SUCH_TABLE”信息

第二种方法

捕获MysqL_error_code值

如果,遇到MysqL_error_code值为1146,则执行CONTINUE操作,并且,输出”NO_SUCH_TABLE”信息

第三种方法

先定义条件,然后再调用条件

这里先定义no_such_table条件,遇到1146错误,就执行CONTINUE操作

第四种方法

使用sqlWARNING

sqlWARNING捕获所有以01开头的,sqlstate_value值,然后,执行EXIT操作,并且,输出ERROR信息

第五种方法

使用NOT FOUND

NOT FOUND捕获所有以02开头的sqlstate_value值,然后,执行EXIT操作,并且,输出”NO_SUCH_TABLE”信息

第六种方法

使用sqlEXCEPTION

sqlEXCEPTION捕获所有没有被sqlWARNING或NOT FOUND捕获的sqlstate_value值,然后,执行EXIT操作,并且,输出”ERROR”信息

定义条件和处理程序

定义条件和处理程序

307a00cc8b4d547d683d1481c0b542d5.png图片描述" title="">

调用存储过程

b050c1d34b78fdd41e0bb0d9fe9b0d89.png图片描述" title="">

@x,是一个用户变量

@x等于3,表示MysqL被执行到程序的末尾

如果,没有DECLARE CONTINUE HANDLER FOR sqlSTATE ‘23000’ SET @x2=1这句代码,第二个INSERT,会因为PRIMARY KEY强制而失败之后,MysqL可能已经采取默认(EXIT)路径,并且,SELECT @x会返回2

注意

@var_name,表示用户变量,使用SET语句为其赋值,用户变量与连接有关,一个客户端定义的变量,不能被其他客户端看到或使用

当客户端退出时,该客户连接的所有变量,将自动释放

总结

以上是编程之家为你收集整理的MySQL定义处理程序全部内容,希望文章能够帮你解决MySQL定义处理程序所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值