oracle 遍历数组

insdf 2011-12-26 10:44:08
查询的时候,要遍历一张表,其中的id如果在数组ss中,就返回回来
现在ss的大小大于1000个,用 id in ss 的方法会报错,不知道有没有其他方法了
...全文
464 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2011-12-28
  • 打赏
  • 举报
回复
select * from table_name where id in (id1,id2,id3...);
in后括号中的参数个数有限制,Oracle 9i 中个数不能超过256,Oracle 10g个数不能超过1000.

如果不可必要必须使用in,可以采用临时表,也可以对参数进行处理成多个in,
其中每个in列表中参数都小于1000,如 id in(id1,id2...) or id in(id501,id502...).
iqlife 2011-12-28
  • 打赏
  • 举报
回复
select * from table_name where id in (id1,id2,id3...);
in后括号中的参数个数有限制,Oracle 9i 中个数不能超过256,Oracle 10g个数不能超过1000.

如果不可必要必须使用in,可以采用临时表,也可以对参数进行处理成多个in,
其中每个in列表中参数都小于1000,如 id in(id1,id2...) or id in(id501,id502...).

insdf 2011-12-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 inthirties 的回复:]
1. 拆分in 为 in or in的方式
2. 数组变成临时表。
[/Quote]
怎么写呢
insdf 2011-12-26
  • 打赏
  • 举报
回复
报错为:ORA-01795: maximum number of expressions in a list is 1000
是说list中的个数大于1000,oracle 10g的限制用in的话不能超过1000个,现在list中是超过1000个的,该怎么写
inthirties 2011-12-26
  • 打赏
  • 举报
回复
1. 拆分in 为 in or in的方式
2. 数组变成临时表。
insdf 2011-12-26
  • 打赏
  • 举报
回复
用ibatis,
主要代码如下:
select t.name
from
user t
where
t.id in
<iterate conjunction="," open="(" close=")">
#list[]#
</iterate>
list是Integer型数组
iqlife 2011-12-26
  • 打赏
  • 举报
回复
错误代码,及实现方式贴出来看看,
感觉你代码写得不合理造成的,用LOOP遍历数组么,看看你现在的代码,有没有优化和更好的实现方式?
insdf 2011-12-26
  • 打赏
  • 举报
回复
in的话oracle会限制不能超过一千个
我心飞翔 2011-12-26
  • 打赏
  • 举报
回复
什么错误呢?
PL/SQL又没有对数据元素做上限限制啊。

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧