如果其中一个失败,如何停止SQL存储过程执行的序列?

时间:2017-09-09 16:51:43

标签: sql sql-server stored-procedures sql-job

这是我遇到的一个场景,    - 我有一个SQL作业,它有大约四个SQL存储过程    - 这些是一个接一个地顺序执行    - 现在案例是:如果任何存储过程失败或引发异常,整个Job应该停止。

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

用这样的东西做一个小程序:

BEGIN TRY

     DECLARE @Return INTEGER

     -- Run first procedure 
     EXEC @Return = firstProcedure
     IF (@Return <> 0)
     BEGIN
          -- Do some error handling 
     END

     -- Run second procedure 
     EXEC @Return = secondProcedure
     IF (@Return <> 0)
     BEGIN
          -- Do some error handling 
     END

     -- etc...

END TRY
BEGIN CATCH
    -- Do some error handling 
END CATCH

答案 1 :(得分:0)

虽然有几种不同的方法可以做到这一点,但我建议你使用SQL Server Agent中的工具。使每个调用成为工作中的一个单独步骤。

这将允许您在成功时从一步移动到下一步。您还可以使用SQL Server Agent的日志记录和错误处理机制来确定错误并进行处理。