MySQL定义处理程序
来源:互联网 发布:我国经济增长数据 编辑:程序博客网 时间:2024/06/03 13:24
定义完条件以后,需要定义针对此条件的处理程序
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”信息
定义条件和处理程序
定义条件和处理程序
调用存储过程
@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中的定义条件和处理程序
- MySQL定义异常和异常处理方法
- (11)mysql中的条件定义、处理
- MySQL定义异常和异常处理方法
- MySQL定义异常和异常处理方法
- MySQL定义异常和异常处理方法
- MySQL定义异常和异常处理方法
- MySQL中定义条件和处理
- MySQL定义异常和异常处理方法
- MySQL存储过程的异常定义及处理
- java程序:mysql特殊字符处理
- .Net——实现IConfigurationSectionHandler接口定义处理程序处理自定义节点
- Asp.Net中使用HTTP处理程序连接MySQL数据库
- HTML DOM 事件,可用于定义js在HTML元素中不同操作的处理程序
- 网址重写 由一个任意或是自己定义的地址转到指定的处理程序上来
- GPS类处理定义
- 数字图像处理的定义
- tensorflow升级到1.2.1后,cuDNN5.0需升级到5.1版本
- 轻量级自定义圆角ImageView-适配-Android-L
- amd64下的寻址模式
- HDU4430 ——Yukari's Birthday (二分,快速幂)
- python实现发送邮件
- MySQL定义处理程序
- 自主编程实现哈希表
- 判断版本,并给出提示
- ie浏览器的设置
- LeetCode 172 Factorial Trailing Zeroes
- 自己做工具--封装PHP的PDO类--单例模式
- 第二十一天学习javahttp编程
- 使用maven构建dubbo服务的可执行jar包
- Codeforces Round #425 (Div. 2) D.Misha, Grisha and Underground