新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Oracle存儲過程中如何正確實現(xiàn)分頁?
在實際的應用中我們可以根據(jù)自己的想法用Oracle存儲過程做一個頁的相關(guān)的存儲過程,下面的文章主要是和大家分享Oracle存儲過程的經(jīng)驗心得,希望你能通此文章對其的實際操作有個更好的了解。

之所以用存儲過程,是因為以后需要修改的話不需要修改程序代碼,只需要修改Oracle存儲過程的代碼。但這個例子是在存儲過程里動態(tài)生成的SQL語句,不知道會不會因此失去存儲過程一次編譯和快速的特點。代碼如下:
1、首先建立一個包,用戶創(chuàng)建一個游標類型
- create or replace package pkg_query as
- type cur_query is ref cursor;
- end pkg_query;
2、創(chuàng)建Oracle存儲過程
- create OR REPLACE PROCEDURE prc_query
- (p_tableName in varchar2,
表名
- p_strwhere in varchar2,
查詢條件 --*
- p_orderColumn in varchar2,
排序的列 --*
- p_orderStyle in varchar2,
排序方式 --*
- p_curPage in out Number,
當前頁
- p_pageSize in out Number,
每頁顯示記錄條數(shù)
- p_totalRecords out Number,
總記錄數(shù)
- p_totalPages out Number,
總頁數(shù)
- v_cur out pkg_query.cur_query)
返回的結(jié)果集
- IS
- v_sql VARchar2(1000) := ’’;
sql語句
- v_startRecord Number(4);
開始顯示的記錄條數(shù)
- v_endRecord Number(4);
結(jié)束顯示的記錄條數(shù)
- BEGIN
記錄中總記錄條數(shù)
- v_sql := ’select TO_NUMBER(count(*)) FROM ’ || p_tableName || ’ where 11=1’;
- IF p_strwhere IS NOT NULL or p_strwhere <> ’’ THEN
- v_sql := v_sql || p_strwhere;
- END IF;
- execute IMMEDIATE v_sql INTO p_totalRecords;
驗證頁面記錄大小
- IF p_pageSize < 0 THEN
- p_pageSize := 0;
- END IF;
根據(jù)頁大小計算總頁數(shù)
- IF MOD(p_totalRecords,p_pageSize) = 0 THEN
- p_totalPages := p_totalRecords / p_pageSize;
- ELSE
- p_totalPages := p_totalRecords / p_pageSize + 1;
- END IF;
上述的相關(guān)內(nèi)容就是對在Oracle存儲過程中正確的實現(xiàn)分頁的實際操作步驟的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】
- Oracle字符集討論的經(jīng)典版
- Oracle EXPLAIN PLAN的實際應用經(jīng)驗總結(jié)
- 修改Oracle默認用戶密碼有效期時間的實操
- Oracle 函數(shù)用法之decode解剖
- Oracle數(shù)據(jù)庫字典的創(chuàng)建與安裝
當前名稱:Oracle存儲過程中如何正確實現(xiàn)分頁?
當前網(wǎng)址:http://www.5511xx.com/article/ccicshd.html


咨詢
建站咨詢
