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)
相关推荐
@解忧杂货铺1 小时前
MySQL历史版本下载及安装配置教程
数据库·mysql
dgiij1 小时前
excel大表导入数据库
数据库·mysql·node.js·excel
多敲代码防脱发1 小时前
导出导入Excel文件(详解-基于EasyExcel)
java·开发语言·jvm·数据库·mysql·excel
风筝超冷2 小时前
获取高德地图JS API的安全密钥和Key的方法
服务器·mysql·js api
数据库幼崽2 小时前
MySQL 8.0 OCP 1Z0-908 51-60题
数据库·mysql·ocp
didiplus2 小时前
MySQL 8.0 OCP(1Z0-908)英文题库(31-40)
mysql·adb·ocp·数据库管理员·mysql认证
didiplus2 小时前
MySQL 8.0 OCP(1Z0-908)英文题库(21-30)
mysql·dba·认证考试·题库
数据库幼崽2 小时前
MySQL 8.0 OCP 1Z0-908 21-30题
mysql·ocp
wjcurry2 小时前
我的实习日报
java·redis·mysql
Johny_Zhao2 小时前
Ubuntu安装部署Zabbix网络监控平台和设备配置添加
linux·网络·mysql·网络安全·信息安全·云计算·apache·zabbix·shell·yum源·系统运维·itsm