在我的 SQL Server 实例中,我有一个到 AS400 的链接服务器。
我想执行一个 CLP 程序,它需要 2 个参数,一个numeric(8,0)
作为输入,一个alphanumeric(3)
作为输出。
这些是我用来执行此操作的 SQL 命令:
DECLARE @Ret varchar(3)
DECLARE @Date varchar(8)
SET @Date = '20200721'
SET @Ret = ' '
EXEC ('CALL IASP01.WUTL.WUTL46(''' + @Date + ''', ''?'')', @Ret) AT AS400
SELECT @Ret
该命令执行没有错误,但没有返回任何结果。
第二个参数是一个varchar(3)
参数,因为 AS400 需要一个字母数字参数来返回结果,但它始终为空。
谁能帮我?
提前致谢
更新:
我还尝试创建一个仅接受 1 个参数并修改其值的简单 CLP。以下是简单的 CLP 代码:
PGM PARM(&DATA)
DCL VAR(&DATA) TYPE(*DEC) LEN(8 0)
CHGVAR VAR(&DATA) VALUE(20200722)
ENDPGM
这是一个非常简单的程序,它接受一个 numeric(8,0) 参数并修改它的值。
下面是我用来执行 DB2 RPG 的 Sql Server 代码:
声明@P1 数字(8, 0) 选择@P1 = 00000000
exec ('CALL .<RPG_Name>(''?'')', @P1 OUTPUT) AT AS400 选择 @P1
执行成功,没有错误。在此调用之后,@P1 变量包含初始值而不是修改后的值,因此在此调用之后我无法在 Sql Server 中获取“返回”值。我该怎么做?
或者如何将值从 CLP 返回到 Sql Server?
谢谢