2012-12-04 114 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不需要错误处理,所以关闭它。