pl/sql中bulk collect的用法
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;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-716765/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【PL/SQL】初試 bulk collectSQL
- PL/SQL LOB和檔案操作,bulk collectSQL
- Oracle 的 bulk collect用法Oracle
- oracle中bulk collect into用法 (批次效率提取遊標資料)Oracle
- Oracle PL/SQL中EXCEPTION用法OracleSQLException
- Oracle資料庫的BULK COLLECT用法之批量增刪改<轉>Oracle資料庫
- 一次遷移思考的記錄--bulk_collect的limit用法MIT
- Quoted- How Bulk Binds in PL/SQL Boost PerformanceSQLORM
- Oracle中巧用bulk collect實現cursor批次fetchOracle
- BULK COLLECT FAILS WITH ORA-04030AI
- 使用BULK COLLECT+FORALL加速批量提交
- APPEND,bulk collect,正常插入比較APP
- 使用Bulk Collect提高Oracle查詢效率Oracle
- 多行資料的批處理之bulk collect
- 用BULK COLLECT 減小LOOP的開銷(1)OOP
- Oracle PL/SQL 優化與調整 -- Bulk 說明OracleSQL優化
- 使用bulk collect實現cursor 批量fetch!
- 使用oracle bulk collect 提高select FETCH LOOP的速度OracleOOP
- 使用Forall 與bulk collect的快速複製表資料
- PL/SQL表---table()函式用法SQL函式
- 遊標+bulk collect into limit的不同方法查詢資料MIT
- pl/sql中的row物件SQL物件
- [20180110]Oracle Bulk Collect and LimitOracleMIT
- SQL 中With as 的用法SQL
- pl/sql中的引數模式SQL模式
- oracle PL/SQL中的過載OracleSQL
- oracle10g_plsql_rercursor_type_table of_小引例_bulk collect intoOracleSQL
- [20180111]Oracle Bulk Collect and Limit2OracleMIT
- 【PL/SQL】向表中插入連續數字之PL/SQL方法SQL
- SQL中的遞迴用法SQL遞迴
- SQL中Merge的用法SQL
- SQL Server中@@ROWCOUNT的用法SQLServer
- SQL Server中distinct的用法SQLServer
- 轉 sql 中 case 的用法SQL
- Oracle PL/SQL程式碼中的註釋OracleSQL
- pl/sql中的forall簡單測試SQL
- PL/SQL中char型別的暗門SQL型別
- 【PL/SQL】在PL/SQL中執行重新整理Shared Pool命令SQL