您好,登錄后才能下訂單哦!
這篇文章主要講解了“Oracle分頁查詢方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Oracle分頁查詢方法是什么”吧!
前言
前面我們介紹Oracle的并行查詢,本來是想用并行查詢來解決獲取所有數據的方法,結果自己測試后發現并沒有達到自己想要的效果,所以還是要準備利用分頁進行查詢了。
分頁查詢
在Oracle中,并沒有想MySql里面的Limit的方法進行過濾,所以要實現分頁查詢要麻煩一些,需要你用原表進行排序后再通過rownum來時行分頁的處理。
Oracle分頁查詢語句基本上可以按照本文給出的格式來進行套用。
Oracle分分頁查詢格式:
其中最內層的查詢SELECT * FROM TABLE_NAME表示不進行翻頁的原始查詢語句。ROWNUM <= 40和RN >= 21控制分頁查詢的每頁的范圍。
上面給出的這個Oracle分分頁查詢語句,在大多數情況擁有較高的效率。分頁的目的就是控制輸出結果集大小,將結果盡快的返回。在上面的分頁查詢語句中,這種考慮主要體現在WHERE ROWNUM <= 40這句上。
代碼實現
我們還是用數據庫的tskuplu的表,這個表里有2W4千多數據,我們可以考慮設置一個頁數,一個每頁的最多行數來分多數查詢效果。
我們自己寫了一個自定義的查詢分頁方法,根據每次修改頁數,來計算vi_startrow和vi_endrow兩個開始行于結束行。然后通過這兩個值進行sql語句的拼接。
通過上面執行完后,我們可以看到拼接后的SQL語句,如下圖:
然后我們把輸出的語句在新的窗口中打開查詢后并運行一下結果
可以看出來我們通過分頁查詢后,可以一段一段的時行輸出了,查詢的耗時我們也能接受。
最后貼上寫的那段語句:
declare vi_page integer; --頁數
vi_rows integer; --每頁行數
vi_startrow integer; --起始行
vi_endrow integer; --結束行
vs_sSql varchar2(8000);
begin
--設置頁數和每頁行數
vi_page:=2;
vi_rows:=1000;
--計算起始行
vi_startrow:=(vi_page-1)*vi_rows+1;
--計算結束行
vi_endrow:=vi_page*vi_rows;
vs_sSql:='select * from (select rownum as rowno, t.* from (select * from tskuplu order by pluid) t
where rownum<= '||to_char(vi_endrow)||') tb_plu
where tb_plu.rowno>='||to_char(vi_startrow);
dbms_output.put_line(vs_sSql);
end;
感謝各位的閱讀,以上就是“Oracle分頁查詢方法是什么”的內容了,經過本文的學習后,相信大家對Oracle分頁查詢方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。