我在试验嵌套存储过程中遇到了一个问题。请高手帮忙看一下。
Create Table Tmp1
(
Field1 Char(10) Null
)
Create Procedure Proc_1
As
Begin Transaction
Insert Into Tmp1 Values('power6d')
If @@Error<>0
Begin
RollBack Transaction
Return
End
Execute Proc_2
Return
Commit Transaction
Create Procedure Proc_2
As
Begin Transaction
Insert Into Tmp1 Values('pwer7d')
RollBack Transaction
Return
Commit Transaction
Execute Proc_1
我想试验在嵌套存储过程中,在内层事务中调用RollBack语句后,是不是会回滚到最外层Begin Transaction的开始位置,在运行之后,TMP1表的结果是我想看到的,但执行这Proc_1存储过程,总会报告错。错误内容如下:
(
服务器: 消息 266,级别 16,状态 2,过程 Proc_2,行 7
EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 1,当前计数 = 0。
服务器: 消息 3903,级别 16,状态 1,过程 Proc_1,行 15
ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
)
请问这是为什么啊?
[此贴子已经被作者于2006-10-27 11:52:26编辑过]