ORA-01795:列表中的最大表达式数为 1000 错误



我需要添加一个具有大约 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)

最新更新