2012-12-04 112 views
0

我有一個「預處理」存儲過程,它調用多個存儲過程。存儲過程中的錯誤處理

最後,當我所有的SPS(內)已成功執行了,我想運行一個更新statment,所以在主SP我有:

EXEC SP1 
EXEC SP2 
EXEC SP3 

-- RUN UPDATE statment here 

我所有的內SP的有以下模板:

BEGIN TRY 
    BEGIN TRANSACTION 

    // DO SOME INSERT,UPDATE ETC.. 

    COMMIT TRANSACTION; 
    END TRY 
    BEGIN CATCH 
     SELECT 
      ERROR_NUMBER() AS ErrorNumber 
      ,ERROR_SEVERITY() AS ErrorSeverity 
      ,ERROR_STATE() AS ErrorState 
      ,ERROR_PROCEDURE() AS ErrorProcedure 
      ,ERROR_LINE() AS ErrorLine 
      ,ERROR_MESSAGE() AS ErrorMessage; 

    IF @@TRANCOUNT > 0 
     ROLLBACK TRANSACTION; 
     RETURN 
    END CATCH 

我的問題是什麼是在這種情況下錯誤處理的最佳方法,即我想確保在我運行最終更新語句之前一切都完成了。

回答

0

因爲我發現每個SP都必須有自己的錯誤處理並且外部SP調用多個SP不需要錯誤處理,所以關閉它。