Oracle分頁查詢

2021-04-17 18:37:54 字數 1633 閱讀 3674

oracle的分頁查詢語句基本上可以按照本文給出的格式來進行套用。

分頁查詢格式:

select * from

(select a.*, rownum rn

from (select * from table_name) a

where rownum <= 40

)where rn >= 21

其中最內層的查詢select * from table_name表示不進行翻頁的原始查詢語句。rownum <= 40和rn >= 21控制分頁查詢的每頁的範圍。

上面給出的這個分頁查詢語句,在大多數情況擁有較高的效率。分頁的目的就是控制輸出結果集大小,將結果盡快的返回。在上面的分頁查詢語句中,這種考慮主要體現在where rownum <= 40這句上。

選擇第21到40條記錄存在兩種方法,一種是上面例子中展示的在查詢的第二層通過rownum <= 40來控制最大值,在查詢的最外層控制最小值。而另一種方式是去掉查詢第二層的where rownum <= 40語句,在查詢的最外層控制分頁的最小值和最大值。這是,查詢語句如下:

select * from

(select a.*, rownum rn

from (select * from table_name) a

)where rn between 21 and 40

下面是copy的乙個oracle分頁的儲存過程:

create or replace procedure knowledgepagercount(p_pagesize number,          --每頁記錄數

p_pageno number,            --當前頁碼,從 1 開始

p_sqlselect varchar2,    --查詢語句,含排序部分

p_outrecordcount out number,--返回總記錄數

cur_out out gm.pager.refcursortype)

asv_sql varchar2(3000);

v_count number;

v_heirownum number;

v_lowrownum number;

begin

----取記錄總數

execute immediate p_sqlselect into v_count;

p_outrecordcount := v_count;

----執行分頁查詢

v_heirownum := p_pageno * p_pagesize;

v_lowrownum := v_heirownum - p_pagesize + 1;

v_sql := 'select *

from (

select a.*, rownum rn

from  ('|| p_sqlselect ||') a

where rownum <= '|| to_char(v_heirownum) || '

) bwhere rn >= ' || to_char(v_lowrownum) ;

--注意對rownum別名的使用,第一次直接用rownum,第二次一定要用別名rn

open cur_out for  v_sql;

end knowledgepagercount;

ORACLE分頁查詢

單錶分頁 start num 起始行號 end num 截止行號 select t.from select s.rownum rn from table s where rownum end num t where rn start num 多表分頁 select from select temp....

oracle 分頁查詢

1 要把rowid來分 select from t xiaoxi where rowid in select rid from select rownum rn,rid from select rowid rid,cid from t xiaoxi order by cid desc where r...

Oracle查詢 分頁

方法一 select from select from select from select from select from product order by id asc where rownum 5 2 1 order by id desc where rownum 5 1 1表示一頁 5表示...