如何在Oracle存儲過(guò)程中實(shí)現分頁(yè)?
??
1、首先建立一個(gè)包,用戶(hù)創(chuàng )建一個(gè)游標類(lèi)型
create or replace package pkg_query as
type cur_query is ref cursor;
end pkg_query;
2、創(chuàng )建存儲過(guò)程
create OR REPLACE PROCEDURE prc_query
(p_tableName
in varchar2,
--表名
p_strwhere
in varchar2,
--查詢(xún)條件 --*
p_orderColumn
in varchar2,
--排序的列 --*
p_orderStyle
in varchar2,
--排序方式 --*
p_curPage
in out Number, --當前頁(yè)
p_pageSize
in out Number, --每頁(yè)顯示記錄條數
p_totalRecords
out Number,
--總記錄數 --*
p_totalPages
out Number,
--總頁(yè)數
v_cur
out pkg_query。
??cur_query)
--返回的結果集
IS
v_sql VARchar2(1000) := ’’;
--sql語(yǔ)句
v_startRecord Number
(4);
--開(kāi)始顯示的記錄條數
v_endRecord Number
(4);
--結束顯示的記錄條數
BEGIN
--記錄中總記錄條數
v_sql := ’select TO_NUMBER(count(*)) FROM ’ || p_tableName || ’ where 1=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;
--驗證頁(yè)面記錄大小
IF p_pageSize ??