我有一个从SQL Server 2008到DB2的链接服务器。链接服务器使用IBM驱动程序而不是Microsoft驱动程序。
所以这适用于SQL Server:
exec ('call RERTEBT.GET_DEFINITION (69,'''','''')') AT MyLinkedDB2Server
这也可以使用openQuery ...从另一个表中返回不同的数据
select
RPMG_ETY_CD,
ROW_CU_DATA_IN,
ROW_EF_DT,
ROW_XPR_DT,
RPMG_ETY_NM
from
OPENQUERY
(MyLinkedDB2Server,
'select
RPMG_ETY_CD,
ROW_CU_DATA_IN,
ROW_EF_DT,
ROW_XPR_DT,
RPMG_ETY_NM
from RERTEBT.V1RERRMM')
但是我无法使用DB2 Sproc返回数据
这失败了 -
SELECT FLT_DFN_ID, FLT_SRC_DFN_NO, FLT_VRSN_NO, FLT_STAT_CD, FLT_TY_CD, FLT_NAME
FROM OPENQUERY (MyLinkedDB2Server,
'call RERTEBT.GET_DEFINITION 69,'''','''')')
有没有人知道如何从SQL Server链接服务器调用DB2存储过程并返回数据,或者可以这样做。我在某处读到了DB2无法做到这一点,但没有看到任何真实的文档。
谢谢D
答案 0 :(得分:3)
Josef回答的更多解释: 您需要右键单击链接服务器的“属性” 然后 - > “服务器选项” 右侧窗格中的“ RPC ”和“ RPC Out ”选项需要 TRUE
- 已编辑 - 我还没有对答案发表评论(没有50个代表)
答案 1 :(得分:1)
你应该能够做到这一点:
EXEC ('{CALL RERTEBT.GET_DEFINITION (69,'''','''')}') AT MyLinkedDB2Server;
甚至更干净的传递变量
EXEC ('{CALL RERTEBT.GET_DEFINITION (?,?,?)}', 69, '', '') AT MyLinkedDB2Server;