Java Oracle异常“列表中表达式的最大数量为1000”
我将字符串列表传递给我的查询(SQL查询已写入),以获取所需的数据。 但我有一个例外:
ora-01795 maximum number of expressions in a list is 1000
我检查了列表中是否有1000多个条目传递给了query in参数
你可以在下面搜索框中键入要查询的问题!
我将字符串列表传递给我的查询(SQL查询已写入),以获取所需的数据。 但我有一个例外:
ora-01795 maximum number of expressions in a list is 1000
我检查了列表中是否有1000多个条目传递给了query in参数
# 1 楼答案
您可以创建一个临时表,并在
IN
语句中插入要使用的值,然后将临时表与实际表连接起来more information about temporary tables# 2 楼答案
从dba-oracle.com
# 3 楼答案
如果您使用的是Oracle DB,那么在一个“where”条件下,列表中的元素不能超过1000个。所以你可以在多个“where”条件中删去你的“where”条件,并用“or”子句连接它们
如果您使用的是hibernate标准,那么可以使用下面的Java方法来实现这一点。 只要在使用过的地方替换代码就行了
与
方法是:
# 4 楼答案
这是oracle对查询中列表传递次数的限制
# 5 楼答案
我解决了这个问题,将列表分成1000个大小的批次,并使用OR加入其中
例如。 ID的eid[]数组
如果我想执行这个查询
我通过编写一小段代码重新编写了这个查询:
在使用hibernate时处理这个错误,您必须通过将列表分成100个批次,然后加入各个结果来解决这个问题(如上面的查询所示)
我不认为hibernate不处理这个问题是有局限性的,因为这个问题可能不是另一个数据库,比如MySQL或DB2。Hibernate是一个跨数据库的ORM框架
# 6 楼答案
如果能够将查询中的db端逻辑转换为存储过程,则可以向其传递更长的数组(集合)
Here你可以找到一个简单的例子。指向文档的链接已经过时,因此这里有一个指向9i文档的链接http://docs.oracle.com/cd/B10500_01/java.920/a96654/oraarr.htm#1040124
SQL部分呢