【发布时间】:2023-01-30 20:57:49
【问题描述】:
我正在尝试使用 Microsoft SQL Server 通过链接服务器调用 DB2 存储过程,但出现错误。
我使用名为 LINKITM 的链接服务器从模式 ASIC1634AC 调用了一个名为 CARDREG 的 DB2 存储过程。我使用了以下代码。
SELECT * FROM OPENQUERY(LINKITM, '
call ASIC1634AC.CARDREG( ''5159070047392866''
, ''0423'', ''221229'', ''170000'', ''RG'', ''6211''
, ''THL'',
''221229123456''
, ''123456'', ''60137300000''
, ''00000010'', ''000000000000010''
, ''FAYSAL BANK LTD THALES TOKENIZATION PK''
, ''0200'', '' '', '' '', '' '', '' '', ''00'')');
当我直接从 IBM Access Client 调用该过程时,我得到了正确的响应,但是当我通过链接服务器调用时,我收到以下错误:
链接服务器“LINKITM”的 OLE DB 提供程序“IBMDASQL”返回消息“SQL0469:IN、OUT 或 INOUT 对于 ASIC1634AC 中过程 CARDREG 中的参数 19 无效。 原因 。 . . . . : 定义过程时为参数 19 指定的 IN、INOUT 或 OUT 属性无效。参数名称是 POUTPUT。发生以下错误之一: -- 无法为 OUT 参数指定默认值。 -- 该属性与 CALL 语句中的参数不一致。如果参数声明为 INOUT 或 OUT,则 CALL 语句中的参数必须指定为主变量或全局变量。 -- 属性被指定为 INOUT 或 OUT 并且 REXX 被指定为语言。如果指定了 REXX,则该属性必须为 IN。恢复 。 . . :要么更改 DECLARE PROCEDURE、CREATE PROCEDURE 或 ALTER PROCEDURE 语句中参数的属性,要么更改参数。再次尝试该请求。”。
【问题讨论】:
标签: sql-server db2 linked-server db2-400