【发布时间】:2014-02-14 03:53:37
【问题描述】:
我收到 ORA-01795:列表中的最大表达式数是 1000 错误,我希望在代码中解决我的项目。基本上我正在使用 2 个数据库(一个 sql server,一个 oracle),这两个数据库我都只有只读访问权限(无法创建临时表)。
我所做的是从 DB 1 中选择一个 ID 列表,然后从 DB2 中搜索与这些 ID 对应的信息。这就是我使用“IN”子句的地方,它包含超过 1000 个 ID。我想知道如何以编程方式解决这个问题——这就是我目前所拥有的(伪代码,我的真实代码要复杂得多,包装器太多):
1. "select ID from table 1 where some condition." [Database 1 conn]
2. string IDs = "";
while (rset.next)
{
IDs += rset.getcolumn("ID");
IDs += ", ";
}
ID.Remove(ID.length - 2); //at this point I have all IDs separated by a comma.
3. "select * from table 2 where ID IN (" +IDs+ ")" //this is where the error occurs.
有解决办法吗?我的想法之一是将 IDs 字符串拆分为每个单元格中有 999 个 ID 的字符串数组,然后在 sql 查询字符串中有一个 for 循环以添加 OR 条件,但是代码有问题。
【问题讨论】:
-
网上已经有很多解决方案。做一些搜索。