SQL Server自定义异常raiserror使用示例
程序员文章站
2022-10-10 16:27:40
在使用sql server存储过程或者触发器时,通常会使用自定义异常来处理一些特殊逻辑。例如游标的销毁,事务的回滚。接下来将会详细的介绍sql server自定义异常的使用...
在使用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;
上一篇: 大量老备案被删除 域名ICP备案开始严查
下一篇: 浅谈网站被降权的常见表现以及一些原因分析
推荐阅读
-
SQL Server中通配符的使用示例
-
SQL Server查询条件IN中能否使用变量的示例详解
-
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
-
数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
-
SQL Server存储过程中使用表值作为输入参数示例
-
SQL Server自定义异常raiserror使用示例
-
SQL Server 2005 中使用 Try Catch 处理异常
-
C#使用SqlConnection连接到SQL Server的代码示例
-
SQL server使用自定义函数以及游标
-
SQL server使用自定义函数以及游标