简体   繁体   English

存储过程中的错误处理

[英]Error handling in stored procedures

I have a single "Pre-Processing" Stored procedure which calls multiple stored procedures inside. 我有一个“预处理”存储过程,它在内部调用了多个存储过程。

Finally when all my SPS (inside) have successfully executed, I want to run an update statment, so in the main SP I have : 最后,当我所有的SPS(内部)都成功执行后,我想运行一个更新语句,因此在主SP中,我有:

EXEC SP1
EXEC SP2
EXEC SP3

-- RUN UPDATE statment here

All of my inner SPs have the following template : 我所有的内部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

My question is as to what is the best approach for error handling in this scenario, ie I want to make sure everything got done before I run that final update statement. 我的问题是在这种情况下错误处理的最佳方法是什么,即我想确保在运行最终更新语句之前一切都已完成。

由于我发现每个SP必须具有自己的错误处理,而外部SP调用多个SP则不需要进行错误处理,因此结束此操作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM