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 小时前
macOS下载、安装scrcpy-v4.1(附安装包scrcpy-macos-aarch64-v4.1.tar.gz)
macos·adb·手机控制·scrcpy·投屏软件·android投屏·屏幕镜像
恋猫de小郭2 小时前
Flutter 3D 渲染的全新选择和应用场景
android·前端·flutter
—Miss. Z—2 小时前
计算机二级MySQL——简单应用题(事件&视图)
android·mysql·adb
会编程的土豆3 小时前
MySQL 中的 IN 和 EXISTS(零基础笔记)
数据库·笔记·mysql
邪修king3 小时前
C++ 进阶终章:异常机制与智能指针全解 —— 从错误处理到 RAII 资源管理,打通现代 C++ 的核心命脉
android·数据结构·c++
三少爷的鞋3 小时前
LiveData 的缺陷:为什么我现在越来越少使用 LiveData?
android
AAA@峥4 小时前
系统化学习 MySQL:数据类型、库表管理、增删改查全解析
数据库·学习·mysql
雨白15 小时前
NDK 初探:基于 C++ 实现参数哈希与签名校验
android
程序员正茂15 小时前
Android studio中初步使用OpenCV库
android·opencv
二宝哥16 小时前
MySQL 修改密码策略详解:从基础到高级配置
mysql·密码学