1.在存储过程中使用Transaction的时候,同样需要try...catch来捕获异常。
2.要注意try...catch语句只能用于sql server2005以上的版本。
3.因为存储过程是可以嵌套子存储过程的,因此在catch捕获异常的时候需要增加一个if条件判断,以避免在嵌套使用的时候因为事务计数异常而产生事务回滚。
4.存储过程中Transaction使用模板:
create PROCEDURE ProcedureName
AS
BEGIN
begin try
begin transaction
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Your code here
commit transaction
end try
begin catch
if(@@TRANCOUNT>0)
begin
rollback transaction
end
end catch
END
GO