我需要添加一个具有大约 17000 个值的参数。而且它们在不断变化。 我希望"all"是默认值,但在这种情况下,由于数据库将列表限制为 1,000 个条目IN
我无法为参数传递所有 17,000 个值。
当我尝试传递所有 17,000 个值时,出现"ORA-01795:列表中的最大表达式数为 1000"错误。
我理解为什么甲骨文不允许更多。 有没有办法克服这个问题?
当您想要所有值时,不要传入所有 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)