sql - ORA-01795 : maximum number of expressions in a list is 1000 error

标签 sql oracle report

我需要添加一个包含大约 17000 个值的参数。而且它们不断变化。 我希望“all”成为默认值,但在这种情况下,我无法传递参数的所有 17,000 个值,因为 IN 列表被数据库限制为 1,000 个条目。

当我尝试传递所有 17,000 个值时,收到“ORA-01795:列表中表达式的最大数量为 1000”错误。

我明白为什么 Oracle 不允许更多。有办法解决这个问题吗?

最佳答案

当您需要全部 17,000 个值时,请勿传入全部值。改为执行此操作。

select * 
from abc 
where (segment = :segment OR :segment IS NULL)

当用户未选择分段参数值时,将返回所有分段的数据。

如果您希望前端将“all”呈现为值,您可以将其作为简单的变体:

select * 
from abc 
where (segment = :segment OR nullif(:segment,'all') IS NULL)

关于sql - ORA-01795 : maximum number of expressions in a list is 1000 error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51771089/

相关文章:

php - MySQL 查询多个 LEFT Joins 问题

sql - 使用输出变量动态执行存储过程

sql - Oracle 10g 中具有 CLOB 字段的表删除速度较慢

oracle - 将 Oracle 报告 (.rdf) 转换为 BIRT 报告

java - 开源生成 TestNG 报告

mysql - 提高该SQL的查询性能

sql - T-SQL帮助-有人可以想到基于集合的操作来代替我们当前在sql中基于行的操作吗?

sql - 寻找基于集合的解决方案,而不是循环遍历 SQL 中的每一行

sql - INSERT 中的 CAST 和 CONCAT

sql - 钻取 SSRS 中的报告