有两个存储过程 p_in,p_out,在存储过程p_out中调用P_increate procedure p_in
as
declare @err int
set @err
begin tran t_in
insert into table_A(....) values(...)
if @@error<>0
begin
set @err=-1
rollback
goto finish
end
commit tran t_in
Finish:
return @err
create procedure p_out
as
decalre @err int
set @err
begin tran t_out
exec @err=p_in ...
if @err<>0
begin
rollback
goto finish
end
commit tran t_out
finish:
return @err如果p_in执行错误,也就是执行p_in后返回的@err<>0,那么就会报
“EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 1,当前计数 = 0。”
ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
这是什么原因造成的
as
declare @err int
set @err
begin tran t_in
insert into table_A(....) values(...)
if @@error<>0
begin
set @err=-1
rollback
goto finish
end
commit tran t_in
Finish:
return @err
create procedure p_out
as
decalre @err int
set @err
begin tran t_out
exec @err=p_in ...
if @err<>0
begin
rollback
goto finish
end
commit tran t_out
finish:
return @err如果p_in执行错误,也就是执行p_in后返回的@err<>0,那么就会报
“EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 1,当前计数 = 0。”
ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
这是什么原因造成的
可以只用P_in里面的trans就可以了。
你参考一下这两篇文章:
http://www.cnblogs.com/kymo/archive/2008/05/14/1194161.html
http://blog.zje.net.cn/u/153/archives/2009/2408.html