【发布时间】:2018-02-05 16:11:25
【问题描述】:
我在 oracle 中动态形成一个查询来选择我将 id 作为输入的数据。我的查询如下
select * from temp where temp_id in ( :Id);
我的输入 id 以千计,所以我动态创建 in 子句,使我的最终查询如下
select *
from temp
where temp_id in (a1,a2,a3,....a999)
or temp_id in (b1,b2,b3,....b999) or so on ....
我的问题是即使在那之后我得到了太多的值异常。 你能帮帮我吗?
【问题讨论】:
-
我怀疑问题在于您试图分解您的 id 列表。此外,您可能希望涵盖没有 id 的情况。我通常使用
where 1 = 2 or temp_id in (list of id's) etc来做到这一点。 -
您的数千个 ID 列表来自哪里?大概不是人类在屏幕上打字。在这种情况下,有机会做一些更聪明的事情,具体取决于您的架构。
-
@APC,我的 ID 是 Java 代码的一部分。我只是想让我的问题变得简单。
-
那又怎样,一个字符串?一个数组?
-
所以我们慢慢走向清晰。你如何调用SQL?它是否嵌入在 Java 层中?您是否有权创建数据库对象? “我只是想让我的问题变得简单”。下次考虑让你的问题完整:从长远来看,这对每个人来说都更容易。
标签: sql oracle oracle12c where-in