2013-02-21 68 views
0

工作,我得到了張貼由我Click Here提交和回滾不是在存儲過程

從這個問題我的問題的一個答案,我得到這個解決方案

BEGIN TRY 
BEGIN TRANSACTION 
    exec(@sqlHeader) 
    exec(@sqlTotals) 
    exec(@sqlLine) 
COMMIT 
END TRY 
BEGIN CATCH 

IF @@TRANCOUNT > 1 
    ROLLBACK 
END CATCH 

得到解決,我之後面臨一個新問題,即執行存儲過程時第一次正常工作,之後它給出以下錯誤

EXECUT後的事務計數E表示BEGIN和COMMIT語句的數量不匹配。以前的計數= 1,當前計數= 0.

我需要你的幫助。

感謝

+1

您正在使用哪個版本的SQL Server?並且請刪除您未使用的版本的標籤。 – 2013-02-21 22:51:30

+0

好的。我正在使用2008-r2 – 2013-02-21 22:53:55

回答

0

發生錯誤時,並回滾是不會發生,因爲在代碼中的錯誤。回滾和檢查它應該是:

IF @@TRANCOUNT > 0 
    ROLLBACK 
END CATCH 

提交後,@@ TRANCOUNT將爲零。如果發生錯誤,@@ TRANCOUNT將爲1.在原始代碼中,它沒有觸發回滾,但它應該有。

+0

謝謝,現在工作正常。 – 2013-02-22 13:51:01