我們都知道用ASP.Net來調用Oracle分頁存儲過程要結合ASPnetpager分頁控件,來實現分頁的自動功能,在2010-01-31 21:01之前我們用的都是GridVIEw自帶的分頁功能,那速度啊慢的真實不行 ,決定自定義分頁 Oracle庫裡有5W多條數據,ASPnetPager做的還是不錯,拿過來用。
Oracle 分頁存儲過程:
create or replace package JT_P_page is
type type_cur is ref cursor; 定義游標變量用於返回記錄集
procedure Pagination (Pindex in number, 要顯示的頁數索引,從0開始
Psql in varchar2, 產生分頁數據的查詢語句
Psize in number, 每頁顯示記錄數
Pcount out number, 返回的分頁數
Prowcount out number, 返回的記錄數
v_cur out type_cur 返回分頁數據的游標
);
end JT_P_page;
定義包主體
create or replace package body JT_P_page is
procedure Pagination(Pindex in number, 要顯示的頁數索引,從0開始
Psql in varchar2, 產生分頁數據的查詢語句
Psize in number, 每頁顯示記錄數
Pcount out number, 返回的分頁數
Prowcount out number, 返回的記錄數
v_cur out type_cur 返回分頁數據的游標
- ) AS
- v_sql VARCHAR2(1000);
- v_Pbegin number;
- v_Pend number;
- begin
- v_sql := 'select count(*) from (' || Psql || ')';
- execute immediate v_sql into Prowcount;
計算記錄總數
- Pcount := ceil(Prowcount / Psize);
計算分頁總數,顯示任意頁內容
- v_Pend := Pindex * Psize + Psize;
- v_Pbegin := v_Pend - Psize + 1;
- v_sql := 'select * from (' || Psql || ') where rn between ' || v_Pbegin || ' and ' || v_Pend;
- open v_cur for v_sql;
- end Pagination;
- end JT_P_page;
這個是在網上找的,還不錯 主要是根據偽列 rownum作為where查詢條件 進行帥選,,通過這次做這個Oracle分頁算是對rownum有了初步的認識,實踐出真理 , 有了Oracle分頁存儲過程截下來就是調用。