MSSQL数据库嵌套存储过程的事务控制

王朝学院·作者佚名  2009-11-07
窄屏简体版  字體: |||超大  

在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

*/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航