2013-12-11 24 views
0

我想知道,如果有可能應用條件事務回滾基於特定批次的狀態。例如,我有以下代碼:有條件的事務回滾

BEGIN TRAN 
--EXEC No 1 
    EXEC [dbo].[MyProc] 1; 
    GO 
--EXEC No 2 
    EXEC [dbo].[MyProc] 22; 
    GO 
--EXEC No 3 
    EXEC [dbo].[MyProc] 333; 
    GO 
--EXEC No 4 
    EXEC [dbo].[MyProc] 5; 
    GO 
COMMIT 

而且我想如果EXEC No 3未能回滾整個事務。如果任何其他執行失敗,我希望SQL Server繼續執行我的查詢。可能嗎?

+0

「失敗」是什麼意思? –

+0

比方說,更新3沒有涉及表,不存在。 – Konza

回答

2

是的,這是可能的。在每個過程調用周圍使用TRY/CATCH塊,確定如何處理每個相應CATCH塊中每個過程的錯誤。

在你的情況下,只在第三個過程調用的CATCH塊中執行ROLLBACK。