bulk collect into之limit的使用

BULK COLLECT 可以降低 SQL 引擎到 PL/SQL 引擎的上下文交换(context switch)次数,,从而实现数据的高速检索。”并不是限制必须一次完成。Oracle 提供了 LIMIT 子句,可以限制每次从表中获取的记录数,测试如下:
 
SQL> select count(*) from t;
 
  COUNT(*)
----------
       536
 
SQL> declare
  2    cursor c_t is select * from t;
  3    type typ_t is table of c_t%rowtype
  4    index by binary_integer; 
  5    v_type_t typ_t;
  6    v_row pls_integer;
  7  begin
  8    open c_t;
  9    loop
10    fetch c_t bulk collect into v_type_t
11        limit 100;
12    exit when v_type_t.count = 0;
13   dbms_output.put_line(v_type_t.count);
14    v_row :=v_type_t.first;
15    while(v_row is not null)
16     loop
17  --   dbms_output.put_line(v_type_t(v_row).empno);
18       null;
19       v_row :=v_type_t.next(v_row);
20     end loop;
21    end loop;
22    close c_t;
23  end;
24  /
 
100
100
100
100
100
36
 
PL/SQL procedure successfully completed.

posted on 2014-05-24 14:54  Sunny_NUAA  阅读(1082)  评论(0编辑  收藏  举报

导航