代码之家  ›  专栏  ›  技术社区  ›  mikcutu

限制选项在SELECT…BULK COLLECT INTO中的用法

  •  0
  • mikcutu  · 技术社区  · 6 年前

    从这个问题的答案开始( Use Bulk Collect result in a select query without cursor ),我想知道是否可以在选择中使用限制选项。。。批量收集到。。。

    我知道可以使用显式游标,但我想知道是否可以使用直接select语句。

    谢谢您,

    1 回复  |  直到 6 年前
        1
  •  2
  •   Community rcollyer    4 年前

    From the documentation :

    A SELECT BULK COLLECT INTO 返回大量行的语句将生成一个大集合。要限制行数和集合大小,请使用以下选项之一:

    • ROWNUM 伪列(在Oracle数据库SQL语言参考中描述)

    • SAMPLE

    • FETCH FIRST 子句(在Oracle数据库SQL语言参考中描述)

    因此,根据您链接到的上一个问题中的示例,您可以:

    SELECT id BULK COLLECT INTO result_bulk FROM table1 WHERE rownum <= 1000;
    

    或者如果你在12c上:

    SELECT id BULK COLLECT INTO result_bulk FROM table1 FETCH FIRST 1000 ROWS ONLY;
    

    显式的优点 fetch 版本与 limit 子句是这样的,您可以在一个循环中这样做,并继续获取接下来的1000行(或不管有多少行),直到您看到所有行为止。与 select 你只有一次机会;除非你把它放在一个循环中并处理分页,甚至每个 选择