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
0
投稿

猜你喜欢

  • 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
  • python检测远程端口是否打开的方法

    2022-01-28 01:45:19
  • Python mutiprocessing多线程池pool操作示例

    2022-02-11 14:19:46
  • 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
  • PHP基于phpqrcode类生成二维码的方法详解

    2023-06-12 17:20:38
  • 在FLASH中调用ASP的方法

    2009-03-09 18:32:00
  • 你是真正的用户体验设计者吗? Ⅲ

    2008-03-27 09:04:00
  • Sql2005启用和关闭xp_cmdshell功能

    2008-09-29 15:37:00
  • Python函数之zip函数的介绍与实际应用

    2022-06-02 00:52:51
  • 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
  • python中管道用法入门实例

    2022-06-26 21:42:08
  • asp之家 网络编程 m.aspxhome.com