嵌套事务回滚报错

guolinchao 2008-05-06 05:07:15
create procedure sp1()
as
begin
begin tran tran1
....
commit tran tran1
...
rollback tran tran1
end

-----------------------
create procedure sp2()
as
begin
begin tran tran2
....
commit tran tran2
...
rollback tran tran2
end

----------------------
create procedure sp()
as
begin
begin tran tranMaster

execute sp1
execute sp2

commit tran tranMaster
...
rollback tran tranMaster
end

执行了 sp存储过程,报错。
提示:无法回滚 tran2。找不到该名称的事务或保存点。
请问错在哪里?
...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
guolinchao 2008-05-08
  • 打赏
  • 举报
回复
事务回滚跟return 没有关系吧。
我吧代码再写详细点
create procedure sp1(...)
as
begin
begin tran tran1
begin try
...
commit tran tran1
end try
begin catch
rollback tran tran1
...
end catch
end

-----------------------
create procedure sp2(...)
as
begin
begin tran tran2
begin try
...
commit tran tran2
end try
begin catch
rollback tran tran2
...
end catch
end

----------------------
create procedure sp(...)
as
begin
begin tran tranMaster

begin try
execute sp1 参数...
execute sp2 参数...

commit tran tranMaster
end try
begin catch
rollback tran tranMaster
...
end catch
end
-狙击手- 2008-05-06
  • 打赏
  • 举报
回复
。。。
中国风 2008-05-06
  • 打赏
  • 举报
回复
存储过程调用存储过程时用return返回判断

----
2005用
begin try
end try
begin catch
raiserror 50005 N'出错'
rollback tran
end catch
中国风 2008-05-06
  • 打赏
  • 举报
回复
create procedure sp1()
as
begin
begin tran tran1
....
begin
commit tran tran1
return 0
end
...
--出错
begin
rollback tran tran1
return 1
end
end

-----------------------
create procedure sp2()
as
begin
begin tran tran2
....
begin
commit tran tran2
return 0
end
...
--出错
begin
rollback tran tran2
return 1
end
end

----------------------
create procedure sp()
as
select 1
as
begin
begin tran tranMaster
declare @i int
execute @i=sp1
if @i=1
goto error
execute @i=sp2
if @i=1
goto error

commit tran tranMaster
return
...
error:
rollback tran tranMaster
end
---
用return返回
中国风 2008-05-06
  • 打赏
  • 举报
回复
sp() 改为sp
去掉()

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧