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

如果其中一个SQL存储过程失败,如何停止SQL存储过程执行序列?,sql,sql-server,stored-procedures,sql-job,Sql,Sql Server,Stored Procedures,Sql Job,这是我遇到的一个场景, -我有一个SQL作业,它大约有四个SQL存储过程 -这些都是按顺序一个接一个地执行的 -现在的情况是:如果任何存储过程失败或引发异常,整个作业都应该停止 我如何做到这一点?尽管有几种不同的方法可以做到这一点,但我建议您使用SQL Server Agent中的功能。将每个调用作为作业中的单独步骤 这将允许您在成功时从一个步骤移动到下一个步骤。您还可以使用SQL Server代理的日志记录和错误处理机制来确定错误并进行处理。使用以下内容编写一个小程序: BEGIN TRY

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


我如何做到这一点?

尽管有几种不同的方法可以做到这一点,但我建议您使用SQL Server Agent中的功能。将每个调用作为作业中的单独步骤


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

使用以下内容编写一个小程序:

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
开始尝试
声明@Return整数
--运行第一个过程
EXEC@Return=firstProcedure
如果(@Return 0)
开始
--做一些错误处理
结束
--运行第二个过程
EXEC@Return=secondProcedure
如果(@Return 0)
开始
--做一些错误处理
结束
--等等。。。
结束尝试
开始捕捉
--做一些错误处理
端接

同意你的看法,戈登,但问题是业务需要通过单个作业和一个步骤执行整个序列(这就是为什么一个过程通过它调用另一个过程):(还有其他选择吗?@Abhi…一个作业可以由多个步骤组成。