alter proc sp_test
(
???? @name varchar(50)
)
as
begin
?? --开始事务
?? begin transaction
?? --设置一个存储报错代码的变量
?? DECLARE @errorSum INT
?? SET @errorSum=0
??
?? --在每一条涉及到数据变动的语句后都累加一次报错代码
?? insert into benInfo values(117,111,'111',111,2)
?? SET @errorSum+=@@ERROR
??
?? update benInfo set benMoney=222222222 where personID=10
?? SET @errorSum+=@@ERROR
???
?? --报错代码不为0表示在执行上述sql时出现错误,回滚事务,撤销所有更改
?? IF ( @errorSum <> 0 )
?? BEGIN
??????? print '出错,回滚'+cast(@errorSum as varchar(50))
??????? ROLLBACK TRANSACTION
?? END
?? ELSE
?? --报错代码为0表示无报错信息,可以执行更改操作
?? BEGIN
??????? print '提交'+cast(@errorSum as varchar(50))
??????? commit transaction
?? END
??
end
--select * from benInfo
--exec sp_test ''