MSSQL数据库嵌套存储过程的事务控制_mssql学习_编程技术-你的首页-uuhomepage.com 在MSSQL规范中,支持事务嵌套,不过在嵌套调用子存储过程时,要回滚事务,需把@@error传给最外层事务。举例如下: drop table testtb go create table testtb ( id int,name varchar(2) ) go --子过程 drop proc proc_insert_sub go create proc proc_insert_sub @errResult int out--返回错误值 as begin declare @errsum int declare @transname varchar(20) set @transname='subtran' set @errsum=0 --正确数据 insert testtb values(1,'00') set @errsum=@errsum+@@error --错误数据 insert testtb values(2,'222') set @errsum=@errsum+@@error --正确数据 insert testtb values(1,'11') set @errsum=@errsum+@@error set @errResult=@errsum end go --主过程 drop proc proc_insert go create proc proc_insert as begin declare @errsum int declare @errsum1 int set @errsum=0 set @errsum1=0 begin tran exec proc_insert_sub @errsum1 out print @errsum1 set @errsum=@errsum+@errsum1 print @errsum print @@trancount if @errsum=0 commit tran else ROLLBACK TRANSACTION end go /*执行 exec proc_insert select * from testtb */
|