首页 > 解决方案 > 如何识别是否有任何子程序失败?

问题描述

在 SQL Server 中,一个有主存储过程,另一个是多个子过程。

如果任何子程序失败,则在主程序中调用子程序时,我们如何识别它?

这个问题问我面试。

标签: sqlsql-server

解决方案


将嵌套过程包含在 try catch 块中。在下面的例子中,如果 SP2 在执行 SP1 时抛出一些错误,错误将被捕获到 catch 块中,并相应地显示错误消息。有关更多详细信息,请参阅文章ERROR_MESSAGE (Transact-SQL)

CREATE PROC [dbo].[SP1]
AS
BEGIN
BEGIN TRY  
    EXEC SP2 
END TRY
BEGIN CATCH
    SELECT ERROR_MESSAGE() AS ErrorMessage; -- capture error
END CATCH
END

推荐阅读