我正在使用Oracle数据库,我有一个包含20条记录的表
CREATE TABLE MyTable( MY_RECORD_ID号码主键, SOME_DATA_1 VARCHAR2(200), SOME_DATA_2 VARCHAR2(200));
…
您可以通过使用批量收集来完成此操作。
DECLARE TYPE t_MyTable_tab IS TABLE OF MyTable%ROWTYPE; l_tab t_MyTable_tab ; CURSOR c_data IS SELECT * FROM MyTable; BEGIN OPEN c_data; LOOP FETCH c_data BULK COLLECT INTO l_tab LIMIT 5; --- Here 5 is your limiting number -- Process contents of collection here. DBMS_OUTPUT.put_line(l_tab.count || 鈥� rows鈥�); EXIT WHEN c_data%NOTFOUND; END LOOP CLOSE c_data; END; /
您可以将分析函数用于此类请求
SELECT my_record_id, some_data_1, some_data_2 FROM ( SELECT CEIL(ROW_NUMBER() OVER(ORDER BY mt.my_record_id) / 5/*set the page size*/) page_id ,mt.* FROM MyTable mt ) t WHERE page_id = 1 /* set the desired page*/ ORDER BY my_record_id
您可以查看此文档
的 分析功能 强>
https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions004.htm#SQLRF06174
的 问汤姆 强>
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1137577300346084930
的 其他例子 强>
https://blogs.oracle.com/oraclemagazine/on-top-n-and-pagination-queries