手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL Server自定义异常raiserror使用示例
SQL Server自定义异常raiserror使用示例
摘要:在使用SQLServer存储过程或者触发器时,通常会使用自定义异常来处理一些特殊逻辑。例如游标的销毁,事务的回滚。接下来将会详细的介绍SQL...

在使用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使用示例】相关文章:

SQLServer基础语法实例应用(一)

SQL Server 数据库安全管理介绍

SQL Server 2008 存储过程示例

SQL server 2008 数据库优化常用脚本

SQL Server 2008中SQL之WaitFor使用介绍

SQL Server 2008 密钥 key 使用方法

SQL Server 2008性能和扩展基础教程

SQLServer2005中的SQLCMD工具使用

SQL Server 2005使用的网络协议

SQL Server2005 异地备份的多种方法

精品推荐
分类导航