sql-server - 使用 AS400 链接服务器将子查询传递到 OpenQuery
问题描述
我在这里有一个到 AS400 的链接服务器。我正在尝试从一个字段中提取数据,但是当我只需要大约 20k 时,它会提取超过一百万条记录。
我有一个我需要的 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 中引用该表。 - 使用 from 结果构建一个逗号分隔的字符串,
SELECT item_id FROM as400_item_scope
并将其包含在您的 openquery 字符串中。
根据返回的记录数,您可能会在尝试使用选项 #2 时遇到语句大小问题。Db2 for IBM i 支持最多 2,097,152 字节的 SQL 语句...
推荐阅读
- vba - 如何删除动态数据验证错误
- javascript - 关于代码中的函数,我不知道它们的含义
- producer-consumer - 如何优化并行合并元素
- xml - akka http中的文件解析和持久化
- android - 进程“命令 'C:\Users\sneha\AppData\Local\Android\Sdk\build-tools\29.0.0\aidl.exe'' 以非零退出值 -1073741819 结束
- internet-explorer - IE - C#,如何将 JavaScript 文件注入网页?
- php - 如何从数组中检索元素 - PHP
- .net - 我可以将流读入包含 Unicode BOM 的字符串吗?
- php - 如何从我的数据库中获取一个值并在输入字段中使用和显示它?
- android - 如何从事件处理程序中获取调用者作为 Kotlin 中的对象