我有一个“预处理”存储过程,它在内部调用多个存储过程。
最后,当我所有的 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
我的问题是,在这种情况下处理错误的最佳方法是什么,即我想确保在运行最终更新语句之前一切都已完成。