从存储过程中获取异常作为输出变量

时间:2017-02-02 11:32:39

标签: sql stored-procedures sql-server-2012 output-parameter

我在存储从存储过程引发的异常时遇到问题。

例如,我有两个存储过程P_AddP_GetAdd 如图所示,P_Add返回除以零的异常, 程序P_GetAdd执行P_Add 我想将P_Add引发的异常返回到执行P_GetAdd的代码 P_Add激活未提供的参数是错误。 帮我看看结果。 感谢。

create procedure P_add
(
    @ErrorMessage varchar (100) OUTPUT
)
as
Declare @a int
Declare @b int
declare @c int

set @a = 1
set @b = 0

Begin try
    SET @c = @a/@b
end try
begin catch
   SET @ErrorMessage = ERROR_MESSAGE();
End catch

create procedure P_getADD
(
@ErrorMessage1 varchar (100) OUTPUT
)
AS

IF EXISTS (
        SELECT *
        FROM sysobjects
        WHERE id = object_id(N'[dbo].[P_add]')
        AND OBJECTPROPERTY(id, N'IsProcedure') = 1   
        )
BEGIN
    EXEC P_add  @ErrorMessage = @ErrorMessage1
END

1 个答案:

答案 0 :(得分:1)

假设我理解了这个问题,您需要在执行@ErrorMessage1存储过程时将output标记为P_add

CREATE PROCEDURE P_getADD
(
    @ErrorMessage1 varchar (100) OUTPUT
)
AS

IF EXISTS (
        SELECT *
        FROM sysobjects
        WHERE id = object_id(N'[dbo].[P_add]')
        AND OBJECTPROPERTY(id, N'IsProcedure') = 1   
        )
BEGIN
    EXEC P_add @ErrorMessage1 OUTPUT
END