SQL Server自定义异常raiserror使用示例
作者:junjie 时间:2024-01-22 10:41:08
在使用SQL Server存储过程或者触发器时,通常会使用自定义异常来处理一些特殊逻辑。例如游标的销毁,事务的回滚。接下来将会详细的介绍SQL Server自定义异常的使用。
使用“raiserror”来抛出自定义异常。如下代码:在存储过程中,抛出自定义异常,然后在catch块中捕获自定义异常。
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='my_sp_test' AND TYPE='P') BEGIN
DROP PROCEDURE my_sp_test;
END;
GO
create procedure my_sp_test @i int, @outstr varchar(100) out as
begin try
declare @j int;
if @i<10 begin
set @outstr = 'system exception.';
set @j = 10/0; -- 因为被除数为0,所以这里将会抛出一个系统的异常
end
else begin
set @j = @i;
set @outstr = 'customer exception';
-- 抛出自定义的异常,在最后的catch块中统一处理异常
RAISERROR (66666, -- Message id.
16, -- Severity,
1 -- State,
) ;
end;
end try
begin catch
if @@ERROR=66666 begin -- 通过@@ERROR的值来判断是否是自定义的异常
set @outstr = @outstr + '---------------- customer exception';
end;
return;
end catch;
go
如上代码,raiserror参数说明:
(1). Message id : 异常的唯一标识,且这个值会被赋值给SQLServer的系统变量@@Error。自定义异常的Message Id建议使用50000以后的,因为50000以内的会被系统异常占用。
(2). Severity : 异常的级别。 可输入1—19的数值。1—10之间不会被catch捕获。19以后是非常严重的级别。
(3). State : 如果输入负值或大于255 的值会生成错误,产生错误则会中断数据库的连接
执行该存储过程,看看自定义异常是否成功捕获:
DECLARE @OUTSTR11 VARCHAR(100);
exec dbo.my_sp_test 12,@OUTSTR11 out
print @OUTSTR11;
标签:SQL,Server,自定义异常,raiserror
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python 解析html之BeautifulSoup
2021-02-09 23:09:12
JS版的date函数(和PHP的date函数一样)
2023-11-15 02:02:11
一篇文章带你了解python标准库--sys模块
2022-04-25 10:21:37
SQL重复记录查询的几种方法
2024-01-28 16:47:59
解决IIS出现Active Server Pages错误“ASP 0201”
2009-05-25 18:04:00
![](https://img.aspxhome.com/file/UploadPic/20093/9/200939182949746s.jpg)
python检测远程端口是否打开的方法
2022-01-28 01:45:19
Python mutiprocessing多线程池pool操作示例
2022-02-11 14:19:46
![](https://img.aspxhome.com/file/2023/8/90308_0s.png)
Python3中的真除和Floor除法用法分析
2023-10-11 09:01:45
优化Python代码使其加快作用域内的查找
2021-09-25 06:40:13
Python多进程同步Lock、Semaphore、Event实例
2021-02-22 17:11:26
JS小游戏之仙剑翻牌源码详解
2024-04-17 09:42:04
![](https://img.aspxhome.com/file/2023/4/136774_0s.jpg)
PHP基于phpqrcode类生成二维码的方法详解
2023-06-12 17:20:38
![](https://img.aspxhome.com/file/2023/0/55310_0s.png)
在FLASH中调用ASP的方法
2009-03-09 18:32:00
你是真正的用户体验设计者吗? Ⅲ
2008-03-27 09:04:00
![](https://img.aspxhome.com/file/UploadPic/20083/26/20083261971986s.jpg)
Sql2005启用和关闭xp_cmdshell功能
2008-09-29 15:37:00
Python函数之zip函数的介绍与实际应用
2022-06-02 00:52:51
![](https://img.aspxhome.com/file/2023/7/103267_0s.png)
Python实现根据IP地址和子网掩码算出网段的方法
2021-11-20 01:40:41
python计算一个序列的平均值的方法
2023-08-25 06:40:17
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2021-02-11 11:15:33
![](https://img.aspxhome.com/file/2023/1/77921_0s.png)
python中管道用法入门实例
2022-06-26 21:42:08