0
我遇到以下问题。我必须存储程序(调试消息双注):事务嵌套过程
CREATE PROC innerProc
AS
BEGIN
SELECT 'innerProc 1',@@TRANCOUNT
BEGIN TRAN
SELECT 'innerProc 2',@@TRANCOUNT
ROLLBACK
SELECT 'innerProc 3',@@TRANCOUNT
END
GO -----------------------------------------
CREATE PROC outerProc
AS
BEGIN
SELECT 'outerProc 1',@@TRANCOUNT
BEGIN TRAN
SELECT 'outerProc 2',@@TRANCOUNT
EXEC innerProc
SELECT 'outerProc 3',@@TRANCOUNT
ROLLBACK
SELECT 'outerProc 4',@@TRANCOUNT
END
GO -----------------------------------------
EXEC outerProc
他们做什么?
outerProc
开始交易(@@ TRANCOUNT = 1)- 执行
innerProc
(在PROC开头@@ TRANCOUNT = 1) innerProc
开始另一个事务(@@ TRANCOUNT = 2)innerProc
回滚事务(@@ TRANCOUNT = 0)- 与这里的问题是:@@ TRANCOUNT在
innerProc
的开始不等于在结束时@@ TRANCOUNT。我究竟做错了什么?这是正确的方法吗?
您是否曾经成功解决过这个问题?你还需要帮助吗? – jcolebrand 2010-12-14 03:44:47
没有。它不适用于命名事务。我已经阅读了一些意见,我认为交易和程序不是一起工作的必要条件。 – 2010-12-14 12:49:49