遊標+bulk collect into limit的不同方法查詢資料
如下需求想在查詢表時先根據bulk collect into方式查詢表中部分資料,然後處理,在查詢表中其餘資料知道查詢出表中所有資料
如一個表有6條資料,第一次次批量取3條,顯示後再批量取3條,已顯示遊標方式查詢
具體構建環境
create TABLE TEST.COURSE
( COURSE_NO NUMBER(38),
DESCRIPTION VARCHAR2(50),
COST NUMBER(9,2),
PREREQUISITE NUMBER(8),
CREATED_BY VARCHAR2(30),
CREATED_DATE DATE,
MODIFIED_BY VARCHAR2(30),
MODIFIED_DATE DATE)
INSERT INTO TEST.COURSE VALUES
(
1,'22223',1,1,'20150101',SYSDATE,'20150101',SYSDATE
);
INSERT INTO TEST.COURSE VALUES
(
2,'22223',1,1,'20150101',SYSDATE,'20150101',SYSDATE
);
INSERT INTO TEST.COURSE VALUES
(
3,'22223',1,1,'20150101',SYSDATE,'20150101',SYSDATE
);
INSERT INTO TEST.COURSE VALUES
(
4,'22223',1,1,'20150101',SYSDATE,'20150101',SYSDATE
);
INSERT INTO TEST.COURSE VALUES
(
5,'22223',1,1,'20150101',SYSDATE,'20150101',SYSDATE
);
INSERT INTO TEST.COURSE VALUES
(
6,'22223',1,1,'20150101',SYSDATE,'20150101',SYSDATE
);
採用rowtype型別查詢
DECLARE
rn number;
CURSOR course_cur IS
SELECT * --注意此處如果cur_result遊標結果是錶行型別的,要查詢所有欄位,但如果是type就要查詢出對應具體欄位
FROM TEST.COURSE;
type delArray1 is table of TEST.COURSE%ROWTYPE index by binary_integer; --ROWTYPE表示表中一行的記錄型別
--type delArray1 is table of TEST.COURSE.COURSE_NO%TYPE index by binary_integer;
cur_result delArray1;
BEGIN
rn := 2;
OPEN course_cur;
for i in 1..3 loop
FETCH course_cur bulk collect into cur_result limit rn;
for i in 1..rn loop
DBMS_OUTPUT.PUT_LINE ('loop COURSE_NO1: '||cur_result(i).COURSE_NO);
end loop;
DBMS_OUTPUT.PUT_LINE ('commit ' );
END LOOP;
close course_cur;
END;
採用type型別查詢
DECLARE
rn number;
CURSOR course_cur IS
SELECT course_no --注意此處如果cur_result遊標結果不是錶行型別的,是type就要查詢出對應具體欄位
FROM TEST.COURSE;
--type delArray1 is table of TEST.COURSE%ROWTYPE index by binary_integer;
type delArray1 is table of TEST.COURSE.COURSE_NO%TYPE index by binary_integer;--%TYPE實際對應表中一列的資料型別
cur_result delArray1;
BEGIN
rn := 2;
OPEN course_cur;
for i in 1..3 loop
FETCH course_cur bulk collect into cur_result limit rn;
for i in 1..rn loop
DBMS_OUTPUT.PUT_LINE ('loop COURSE_NO1: '||cur_result(i));
end loop;
DBMS_OUTPUT.PUT_LINE ('commit ' );
END LOOP;
close course_cur;
END;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750077/viewspace-2075986/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle中bulk collect into用法 (批次效率提取遊標資料)Oracle
- 使用Bulk Collect提高Oracle查詢效率Oracle
- [20180110]Oracle Bulk Collect and LimitOracleMIT
- 多行資料的批處理之bulk collect
- 一次遷移思考的記錄--bulk_collect的limit用法MIT
- Oracle 的 bulk collect用法Oracle
- 遊標查詢
- [20180111]Oracle Bulk Collect and Limit2OracleMIT
- 流式查詢1. mybatis的遊標Cursor,分頁大資料查詢MyBatis大資料
- 使用Forall 與bulk collect的快速複製表資料
- pl/sql中bulk collect的用法SQL
- Oracle資料庫的BULK COLLECT用法之批量增刪改<轉>Oracle資料庫
- 【PL/SQL】初試 bulk collectSQL
- Access查詢實現Mysql的 limit 查詢MySqlMIT
- BULK COLLECT FAILS WITH ORA-04030AI
- 使用BULK COLLECT+FORALL加速批量提交
- APPEND,bulk collect,正常插入比較APP
- 用BULK COLLECT 減小LOOP的開銷(1)OOP
- PostgreSQL、KingBase 資料庫 ORDER BY LIMIT 查詢緩慢案例SQL資料庫MIT
- PL/SQL LOB和檔案操作,bulk collectSQL
- 使用bulk collect實現cursor 批量fetch!
- SpringBoot整合Elasticsearch遊標查詢(scroll)Spring BootElasticsearch
- 資料庫資料的查詢----連線查詢資料庫
- 使用oracle bulk collect 提高select FETCH LOOP的速度OracleOOP
- bulk_collect結合dbms_application_info監控資料處理進度APP
- 遊標資料不同方式讀取、提交效能對比分析
- efcore 跨表查詢,實現一個介面內查詢兩個不同資料庫裡各自的表資料資料庫
- Oracle中巧用bulk collect實現cursor批次fetchOracle
- django對資料庫查詢基本方法Django資料庫
- Oracle 10gR2 查詢資料的方法Oracle 10g
- MySql中limit子查詢的解決辦法MySqlMIT
- 關於mysql 子查詢中 使用 limitMySqlMIT
- 回閃查詢查詢刪除的資料
- Flask——資料的查詢Flask
- mysql資料庫連表查詢的幾種方法MySql資料庫
- 解析MSSQL跨資料庫查詢的實現方法SQL資料庫
- QL Server 百萬級資料提高查詢速度的方法Server
- Android SQL資料庫查詢方法 query( )AndroidSQL資料庫