這是我遇到的一個場景, - 我有一個SQL作業,它有大約四個SQL存儲過程 - 這些是依次執行的順序 - 現在情況是:如果任何存儲過程失敗或引發例外,整個工作應該停止。如何停止SQL存儲過程執行的順序,如果其中一個失敗?
我該怎麼做?
這是我遇到的一個場景, - 我有一個SQL作業,它有大約四個SQL存儲過程 - 這些是依次執行的順序 - 現在情況是:如果任何存儲過程失敗或引發例外,整個工作應該停止。如何停止SQL存儲過程執行的順序,如果其中一個失敗?
我該怎麼做?
雖然有幾種不同的方法可以做到這一點,但我建議您使用SQL Server Agent中的工具。將每個呼叫都作爲工作中的一個獨立步驟。
這將允許您在成功時從一步移到下一步。您還可以使用SQL Server Agent的日誌記錄和錯誤處理機制來確定錯誤並對其進行處理。
讓自己小程序像這樣的東西:
BEGIN TRY
DECLARE @Return INTEGER
-- Run first procedure
EXEC @Return = firstProcedure
IF (@Return <> 0)
BEGIN
-- Do some error handling
END
-- Run second procedure
EXEC @Return = secondProcedure
IF (@Return <> 0)
BEGIN
-- Do some error handling
END
-- etc...
END TRY
BEGIN CATCH
-- Do some error handling
END CATCH
同意你戈登,但事情是有業務需要通過單一的工作,在一個單一的步驟來執行這整個序列只(這就是爲什麼一個過程是通過它調用另一個):(有沒有其他的選擇? – Abhi
@Ahi ...一個工作可以包含多個步驟。 –