Sql Server 2005及以上的存储过程事务及异常处理

本文回顾了SQL Server 2005及以上版本中存储过程的事务管理和异常处理,介绍了关键系统函数如ERROR_NUMBER、ERROR_SEVERITY等用于获取错误信息的方法。

两年没怎么用Sql Server了,出去面试的时候连存储过程都写不顺畅了,太丢人了。

这里对Sql Server 2005及以上的版本在存储过程事务及异常处理方面做个记录,

if (object_id('proc_demo', 'p') is not null)
    drop proc proc_demo
go
create proc proc_demo
(
	@id int
)
as
begin
    set nocount on;
    begin try
		BEGIN tran @tran
			delete dt_article where id=@id
			delete dt_article_albums where article_id=@id
	    commit tran @tran
	end try
	begin catch
		if @@TRANCOUNT > 0
			rollback tran @tran
		declare @ErrMsg nvarchar(4000), @ErrSeverity int
		select @ErrMsg = ERROR_MESSAGE(),
			   @ErrSeverity = ERROR_SEVERITY()

		raiserror (@ErrMsg, @ErrSeverity, 1) --拋出异常
	end catch
end
go
    Sql server 2005提供了一些系统函数返回错误信息
    ERROR_NUMBER()----返回错误的数量
    ERROR_SEVERITY() ----返回错误的严重级别
    ERROR_STATE() ----返回错误的状态码
    ERROR_PROCEDURE() ----返回发生错误的存储过程或者触发器的名称
    ERROR_LINE() ----返回错误发生的行数
    ERROR_MESSAGE() ----返回错误的详细信息



转载于:https://my.oschina.net/congqian/blog/135834

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值