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