pl sql中bulk collect的用法

2021-09-23 19:37:58 字數 2217 閱讀 1672

bulk collect可以將查詢結果一次性地載入到collections中,而不用一條一條地處理。在select into,fetch into,returning into語句使用使用bulk collect時,所有的into變數都必須是collections。

create table jy (

object_id number(12),

object_name varchar2(20),

object_type varchar2(20) )

在select into語句中使用bulk collect

declare

type object_list is table of jy.object_name%type;

objs object_list;

begin

select object_name bulk collect

into objs

from jy;

for r in objs.first .. objs.last loop

dbms_output.put_line(''|| objs(r));

end loop;

end; /

在fetch into中使用bulk collect

declare

type objecttab is table of jy%rowtype;

objs objecttab;

cursor cob is

select object_id, object_name, object_type

from jy;

begin

open cob;

fetch cob bulk collect

into objs;

close cob; -- 把結果集一次fetch到collect中,我們還可以通過limit引數,來分批fetch資料

for r in objs.first .. objs.last loop

dbms_output.put_line(' ' || objs(r).object_name);

end loop;

end;

declare

type objecttab is table of jy%rowtype;

objs objecttab;

cursor cob is

select object_id, object_name, object_type

from jy;

begin

open cob;

loop

fetch cob bulk collect

into objs limit 100;--每次取一百條資料這是可以根據你的資料庫效能來決定的

exit when cob%notfound;

dbms_output.put_line('count:' || objs.count || ' first:' || objs.first ||

' last:' || objs.last);

for r in objs.first .. objs.last loop

dbms_output.put_line(' objs(r)=' || objs(r).object_name);

end loop;

end loop;

close cob;

end;

在returning into中使用bulk collect

declare

type id_list is table of jy.object_id%type;

ids id_list;

type name_list is table of jy.object_name%type;

names name_list;

begin

delete from jy  returning object_id, object_name bulk collect into ids,

names;

dbms_output.put_line('deleted ' || sql%rowcount || ' rows:');

for i in ids.first .. ids.last loop

dbms_output.put_line('object #' || ids(i) || ': ' || names(i));

end loop;

end;

PL SQL中的游標

游標是對映在結果集中一行資料上的位置實體,有了游標,使用者就可以訪問結果集中的任意一行資料了,將游標放置到某行後,即可對該行資料進行操作,例如提取當前行的資料等。oracle 游標有4個屬性 isopen,found,notfound,rowcount。isopen判斷游標是否被開啟,如果開啟 is...

PL SQL中的游標

為了處理 sql 語句,oracle 必須分配一片叫上下文 context area 的區域來處理所必需的資訊,其中包括要處理的行的數目,乙個指向語句被分析以後的表示形式的指標以及查詢的活動集 active set 游標是乙個指向上下文的控制代碼 handle 或指標。通過游標,pl sql可以控制...

PL SQL中的 作用

是 oracle 中呼叫 儲存過程的時候,指定 引數名進行呼叫.一般是,某些引數有預設值的時候,你需要跳過某些引數來進行呼叫。下面是具體的例子。引數的預設值 sql create or replace procedure helloworld3 p user name varchar2,p val1...