内部に複数のストアドプロシージャを呼び出す単一の「前処理」ストアドプロシージャがあります。
最後に、すべての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
私の質問は、このシナリオでのエラー処理の最善のアプローチは何かということです。つまり、最終的な更新ステートメントを実行する前に、すべてが完了していることを確認したいと思います。