过着简单,真实的生活,喜欢收藏变形金刚(TFE,G1,SL系列),研究金融股市,KOF98,篮球,学习研究Oracle技术,我并不是一个全职的Oracle DBA,但是对于Oracle技术的热爱和研究,是一个不争的事实,愿意结交广大Oracle技术爱好者!MSN:oracle_kof_tf@hotmail.com

Bulk Collect的基本用法

上一篇 / 下一篇  2008-03-12 16:54:59 / 个人分类:Oracle数据库技术-PL/SQL

       一般来讲在PL/SQL开发过程中,我们可以采用bulk collect将查询一次加载到一个集合(collection)中,而不是传统的通过cursor一条条的处理。大大提高了效率减少了loop循环的开销,但是需要注意的是bulk collect的所有承载变量都应该是collection类型的。

简单的例子:

1.通过cursor的fetch into来使用bulk collect

declare
    type id_value is table of alan.id%type;
    my_result id_value;
    cursor mycur is select id from alan where id <= 10;
begin
    open mycur;
    fetch mycur bulk collect into my_result;
    -- dbms_output.put_line(mycur%rowcount);
    close mycur;
    
    for i in 1 .. my_result.count
    loop

        dbms_output.put_line(my_result(i));

    end loop;
end;
/

2.加limit来限制fetch的数量,这里只从cursor里面fetch 5行数据

declare
    type id_value is table of alan.id%type;
    my_result id_value;
    cursor mycur is select id from alan where id <= 10;
begin
    open mycur;
    fetch mycur bulk collect into my_resultlimit 5;
    -- dbms_output.put_line(mycur%rowcount);
    close mycur;
   
    for i in 1 .. my_result.count
    loop

        dbms_output.put_line(my_result(i));

    end loop;
end;
/

3.在select中使用bulk collect的用法

declare
    type id_value is table of alan.id%type;
    my_result id_value;
begin
    select id bulk collect into my_result from alan where rownum <= 15;

    for i in 1 .. my_result.count
    loop   
        dbms_output.put_line(my_result(i));
    end loop;

end;
/


 

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar