无法从从另一个 SP 调用的 SP 获取输出参数

cannot get the output parameter from an SP called from another SP

我试图从另一个存储过程调用的存储过程中获取输出参数值,但没有成功。我正在分别设置输出参数,但它 returns NULL.

ALTER PROCEDURE [dbo].[btn_usp_label_next_lp]
    @out_vchMsg                 NVARCHAR(30)    OUTPUT,
    @out_vchCode                NVARCHAR(30)    OUTPUT
AS
    DECLARE  @v_nSysErrorNum INTEGER

    EXEC usp_get_next_value_dummy 'BTN_DUMMY_LP', @out_vchCode OUTPUT, @v_nSysErrorNum OUTPUT, @out_vchMsg OUTPUT

输出参数@out_vchCode始终为空,但存储过程usp_get_next_value_dummy填充了@out_vchCode。我不明白为什么上面 returns null。

谁能给我个主意?

您需要将变量限定在您的过程范围内。它们被定义为输出,但您随后试图将它们传递给另一个过程。我不是嵌套过程的超级粉丝,因为维护可能会变得非常丑陋,但这里是你如何做到这一点的。

ALTER PROCEDURE [dbo].[btn_usp_label_next_lp]
    @out_vchMsg                 NVARCHAR(30)    OUTPUT,
    @out_vchCode                NVARCHAR(30)    OUTPUT
AS
    DECLARE  @v_nSysErrorNum INTEGER
        , @vchCode NVARCHAR(30)
        , @vchMsg NVARCHAR(30)

    EXEC usp_get_next_value_dummy 'BTN_DUMMY_LP', @vchCode OUTPUT, @v_nSysErrorNum OUTPUT, @vchMsg OUTPUT

    SELECT @out_vchCode = @vchCode
        , @out_vchMsg = @vchMsg