ORA-01795: 列表中表达式的最大数目为 1000 错误
ORA-01795: maximum number of expressions in a list is 1000 error
我需要添加一个具有大约 17000 个值的参数。他们不断变化。
我希望 "all" 成为默认值,但在那种情况下,由于 IN
列表被数据库限制为 1,000 个条目,因此我无法将所有 17,000 个值传递给参数。
当我尝试传递所有 17,000 个值时,出现 "ORA-01795: maximum number of expressions in a list is 1000" 错误。
我理解为什么 Oracle 不允许更多。有没有办法克服这个问题?
不要在需要时全部传递 17,000 个值。改为这样做。
select *
from abc
where (segment = :segment OR :segment IS NULL)
当用户没有 select 段参数值时,这将为所有段 return 数据。
如果您希望您的前端将 "all" 显示为一个值,您可以将其作为一个简单的变体:
select *
from abc
where (segment = :segment OR nullif(:segment,'all') IS NULL)
我需要添加一个具有大约 17000 个值的参数。他们不断变化。
我希望 "all" 成为默认值,但在那种情况下,由于 IN
列表被数据库限制为 1,000 个条目,因此我无法将所有 17,000 个值传递给参数。
当我尝试传递所有 17,000 个值时,出现 "ORA-01795: maximum number of expressions in a list is 1000" 错误。
我理解为什么 Oracle 不允许更多。有没有办法克服这个问题?
不要在需要时全部传递 17,000 个值。改为这样做。
select *
from abc
where (segment = :segment OR :segment IS NULL)
当用户没有 select 段参数值时,这将为所有段 return 数据。
如果您希望您的前端将 "all" 显示为一个值,您可以将其作为一个简单的变体:
select *
from abc
where (segment = :segment OR nullif(:segment,'all') IS NULL)