|
MSSQL数据库嵌套存储过程的事务控制_mssql学习_编程技术-你的首页-uuhomepage.com 在MSSQL规范中,支持事务嵌套,不过在嵌套调用子存储过程时,要回滚事务,需把@@error传给最外层事务。举例如下:drop table testtbgocreate table testtb( id int,name varchar(2))go--子过程drop proc proc_insert_subgocreate 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=@errsumendgo--主过程drop proc proc_insertgocreate proc proc_insertas begindeclare @errsum intdeclare @errsum1 intset @errsum=0set @errsum1=0 begin tran exec proc_insert_sub @errsum1 out print @errsum1 set @errsum=@errsum+@errsum1 print @errsumprint @@trancount if @errsum=0 commit tran else ROLLBACK TRANSACTION endgo/*执行exec proc_insertselect * from testtb*/
|