MySQL   发布时间:2022-05-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MySQL定义处理程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

定义完条件以后,需要定义针对此条件的处理程序 MysqL中,使用DECLARE语句定义处理程序

<h3 id="语法格式">语法格式

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

<h3 id="参数说明">参数说明

Handler_type,为错误处理方式,参数取值有三个 CONTinUE,表示遇到错误不处理,继续执行 EXIT,表示遇到错误马上退出 UNDO,表示遇到错误后,撤销之前的操作,MysqL中,暂时不支持这样的操作 Sp_statement,参数为程序语句段,表示在遇到定义的错误时,需要执行的存储过程 Condition_value,表示错误类型

<h3 id="conditionvalue取值如下">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,匹配数值类型错误代码

<h3 id="定义处理程序的几种方式">定义处理程序的几种方式

<h3 id="方法一捕获sqlstatevalue">方法一,捕获sqlstate_value

DECLARE CONTinUE HANDLER FOR sqlSTATE ‘42s02’ SET @info=’NO_SUCH_TABLE’;

<h3 id="方法二捕获MysqLerrorcode">方法二,捕获MysqL_error_code

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

<h3 id="方法三先定义条件然后调用">方法三,先定义条件,然后调用

DECLARE no_such_table CONDITION FOR 1146; DECLARE CONTinUE HANDLER FOR NO_SUCH_TABLE SET @info=’ERROR’;

<h3 id="方法四使用sqlwarning">方法四,使用sqlWARNING

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

<h3 id="方法五使用Not-found">方法五,使用NOT FOUND

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

<h3 id="方法六使用sqlexception">方法六,使用sqlEXCEPTION

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

<h3 id="解释说明">解释说明

<h3 id="第一种方法">第一种方法

捕获sqlstate_value值 如果,遇到sqlstate_value值为’42s02’,则执行CONTinUE操作,并且,输出”NO_SUCH_TABLE”信息

<h3 id="第二种方法">第二种方法

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

<h3 id="第三种方法">第三种方法

先定义条件,然后再调用条件 这里先定义no_such_table条件,遇到1146错误,就执行CONTinUE操作

<h3 id="第四种方法">第四种方法

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

<h3 id="第五种方法">第五种方法

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

<h3 id="第六种方法">第六种方法

使用sqlEXCEPTION sqlEXCEPTION捕获所有没有被sqlWARNING或NOT FOUND捕获的sqlstate_value值,然后,执行EXIT操作,并且,输出”Error”信息 定义条件和处理程序

定义条件和处理程序

@H_197_69@@H_197_69@title="MySQL定义处理程序" alt="MySQL定义处理程序" src="http://code.js-code.com/res/2019/01-02/09/cd0384b5e078043238e3b0c96386cfe0.jpg" >

调用存储过程

@H_197_69@@H_197_69@title="MySQL定义处理程序" alt="MySQL定义处理程序" src="http://code.js-code.com/res/2019/01-02/09/30b62ed88ed0e1fcfd298092a0dedc25.jpg" >

@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定义处理程序所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: