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...