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 小时前
[Android] APK提取器(1.3.7)版本
android
m0_748232641 小时前
mysql的主从配置
android·mysql·adb
秋长愁1 小时前
Android监听应用前台的实现方案解析
android
胖虎12 小时前
2025 新版Android Studio创建Java语言项目
android·java·android studio·创建java项目
tian-ming3 小时前
MySQL(1)基础篇
数据库·mysql
JabamiLight3 小时前
Lineageos 22.1(Android 15)Launcer简单调整初始化配置
android·android 15·lineageos 22.1·launcer
隔壁老王1563 小时前
postgresql实时同步数据表mysql
数据库·mysql·postgresql
昔我往昔4 小时前
MYSQL中的性能调优方法
数据库·mysql
敲代码的鱼哇5 小时前
设备唯一ID获取,支持安卓/iOS/鸿蒙Next(uni-device-id)UTS插件
android·ios·uniapp·harmonyos
luoluoal6 小时前
基于Java EE“陕西农特产品”网络交易平台设计与实现(源码+文档)
java·mysql·毕业设计·ssm·源码