我需要添加一个包含大约 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/