0

内部に複数のストアドプロシージャを呼び出す単一の「前処理」ストアドプロシージャがあります。

最後に、すべてのSPS(内部)が正常に実行されたら、更新ステートメントを実行したいので、メイン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

私の質問は、このシナリオでのエラー処理の最善のアプローチは何かということです。つまり、最終的な更新ステートメントを実行する前に、すべてが完了していることを確認したいと思います。

4

1 に答える 1

0

各SPには独自のエラー処理が必要であり、複数のSPを呼び出す外部SPにはエラー処理が必要ないことがわかったので、これを閉じます。

于 2012-12-27T17:27:41.873 に答える