我试图从另一个存储过程调用的存储过程中获取输出参数值但是我没有成功。我分别设置输出参数但返回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
始终为null,但存储过程usp_get_next_value_dummy
填充@out_vchCode
。我不明白为什么它在上面返回null。
有人可以给我一个想法吗?
答案 0 :(得分:1)
您需要将变量限定为您的过程。它们被定义为输出,但您正在尝试将它们传递给另一个proc。我不是嵌套过程的忠实粉丝,因为维护可能会变得非常丑陋但是你可以这样做。
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