我有一张表有大约3000万条记录,我想循环显示表中存在的记录,如下所示:
for i in (select * from tbl_items it
Left join location lo
On lo.id=it.location_id) loop
// check some condition
// insert into log table
end loop ;
Oracle11g中的PL / SQL过程中的for循环是否有任何限制? 我认为它有限制,我怎么能跳过限制?
答案 0 :(得分:4)
PL / SQL对循环中的迭代次数没有任何实际限制。
我无法证明这一点,但我的理由是说没有限制:
在某些点,每个循环都会死掉 - 你将耗尽资源。但对于像PL / SQL这样理智的语言,您可以更加关注cosmic rays。
也许是因为"限制"你的意思是LIMIT
批量收集选项?如果是这样,Oracle cursor-FOR循环使用限制为100.这意味着它将一次获取100行。这是内存和降低开销之间的良好折衷,在实践中总是足够好。
作为a_horse_with_no_name建议,完全避免循环是Oracle SQL中的最佳实践。基于集合的程序几乎总是比逐行更快。