存储过程中的错误处理

时间:2012-12-04 20:38:11

标签: sql-server-2008 error-handling

我有一个“预处理”存储过程,它调用多个存储过程。

最后当我的所有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

我的问题是在这种情况下错误处理的最佳方法是什么,即我想确保在运行最终更新语句之前完成所有操作。

1 个答案:

答案 0 :(得分:0)

关闭这个,因为我发现每个SP必须有自己的错误处理,而外部SP调用多个SP不需要进行错误处理。