MySQL 、Sql server 错误处理机制

sql server 错误处理机制

try 。。。catch

复制代码
```sql
---Try Catch  Syntax
BEGIN  TRY
	{<sql statements>}
end TRY
BEGIN Catch
	{<sql> statements}
end catch [;]




####   MySQL    程序错误处理机制
** 定义条件  +   定义处理程序**
定义条件:
>declare 错误名称 condition for  {数值型错误码 | sqlstate '字符串类错误代码'}
> 
> 错误码的说明:
> MySQL_error_code  和  sqlstate_value  都可以表示MySQL的错误
> MySQL_error_code  : 是数值型错误代码
> sqlstate_value :是长度为 5 的字符串类型错误代码。
![在这里插入图片描述](https://img-blog.csdnimg.cn/28e8676aa86245fa91e20449aae8a9c9.png)
**案例**
> #  方式1
> declare   Filed_id_PRI  condition for  1062
>  
>  # 方式2
>  declare  Filed_id_PRI  condition for  sqlstate '23000'

**定义处理程序**
可以为SQL执行过程中发生的某种类型的错误定义特殊的处理程序。定义处理程序时,使用declare语句的语法如下:

>declare  处理方式   handler for 错误类型  处理语句;
> 
> 处理方式:  continue、 exit、undo
> continue:表示遇到错误不处理,继续执行
> exit:表示遇到错误,马上退出。  默认就这个
> undo : 表示遇到错误后撤回之前的操作,mySQL 中目前不支持这样操作
>  
>  错误类型 (即条件)
>  SQLSTATE '字符串错误码' :表示长度为 5 的 SQLstate_value 类型的错误代码
>  mysql_error_code :匹配数值类型的错误代码
>  错误名称 :表示  declare    错误名称    condition  for  错误代码   
>  SQLWarning :匹配所有以 01 开头的SQLSTATE错误代码
>  NOT FOUND :匹配所有以 02开头的SQLSTATE错误代码
>  sqlexception:匹配所有 没有被SQLWARINING或NOT FOUND捕获的SQLSTATE错误代码
>   
>   处理语句:
>   如果出现上述条件之一,则采用对应的处理方式,并执行指定的处理语句。语句可以是像
>   set 变量 = 值  这样的简单语句,
>   也可以是使用  begin  。。。。。 end  编写的复合语句
>    
>     
>  案例
>  declare   continue  handler for   {1062 | sqlstate '23000' | Filed_id_PRI  } set  @val='xxxx'
>  
>  


**案例**

delimiter $

create procedure pro_1()

begin

declare continue handler for 1062 set @val='ares-wang';

set @x=0;

insert into test_1(id,name) values(1,'zen'),(2,'zen');

set @x=1;

end $

delimiter ;

call pro_1()

复制代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/aa81e3fbb42a45d086f398be7734b6b8.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/227fb7cac47b4ef286ed0c3569850087.png)
相关推荐
2401_896732134 小时前
MySQL小笔记
mysql
程序员塔塔喵6 小时前
【MySQL篇|第七篇】MySQL事务
数据库·mysql·mysql事务
独隅7 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
_孤傲_7 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
为思念酝酿的痛9 小时前
MySQL的操作
数据库·mysql
Umi·11 小时前
MySQL库表操作
数据库·mysql
且随疾风前行.11 小时前
Paint Cavans高级绘制:[一]Paint画笔高级应用
android·ui
星光开发者11 小时前
基于springboot智慧草场牛羊管理系统-计算机毕设【课程设计】50360
vue.js·spring boot·后端·mysql·php·课程设计·express
郑州光合科技余经理12 小时前
同城小程序开发:同一笔单在用户端和商家端各显示到哪
android·java·开发语言·前端·后端·uni-app·php
猫咪很可爱12 小时前
MySQL 视图与只读用户:安全查询的完整实践指南
数据库·sql·mysql