我这里有一个链接到AS400的服务器。我正在尝试从一个字段中提取数据,但是当我只需要大约2万个记录时,它正在提取一百万条记录。
我有一个需要的ID列表,我正在尝试弄清楚如何将该列表传递给OpenQuery。
这是我的OpenQuery:
SELECT * FROM OPENQUERY(AS400, '
SELECT
IMITNO, IMITD1, IMITD2, IMMFNO, IMBMTP, IMDSCO
FROM AS400.APLUS2FLE.ITMST
WHERE IMDSCO != ''Y''
')
我想添加WHERE IMITNO IN (SELECT item_id FROM as400_item_scope)
,但是as400_item_scope表在SQL机器上,而不在AS400上。我看了几个例子,可以传递一个变量,但是我不明白如何传递这样的列表/查询。
我正在使用最新的SSMS,但是SQL Server版本是2008
据我所知,你不知道...
两个选项..
SELECT item_id FROM as400_item_scope
的结果插入到IBM i上的(临时?)表中,然后在openquery中引用该表。 SELECT item_id FROM as400_item_scope
的结果构建一个逗号分隔的字符串,并将其包含在您的openquery字符串中。取决于返回的记录数,尝试使用选项#2可能会遇到语句大小问题。用于IBM i的Db2支持最大2,097,152字节的SQL语句...