create or replace procedure pager(page in
number,--
資料頁數,從1開始
pagesize in
number,--
每頁大小
tablename nvarchar2,--
表名strwhere nvarchar2,--
where條件
orderby nvarchar2,
numcount out
number,--
總記錄數
v_cur out pkg_query.cur_query) is
strsql
varchar2(2000);--
獲取資料的sql語句
pagecount number;--
該條件下記錄頁數
startindex number;--
開始記錄
endindex number;--
結束記錄
----
--分頁獲取資料
begin
strsql:='
select count(1) from '||
tablename;
if strwhere is
notnull
or strwhere<>
''then
strsql:
=strsql||
'where '||
strwhere;
endif;
execute immediate strsql into
numcount;
--計算資料記錄開始和結束
pagecount:=numcount/pagesize+1;
startindex:
=(page-
1)*pagesize+1;
endindex:
=page*
pagesize;
strsql:='
select rownum ro, t.* from
'||tablename||'t
';
strsql:
=strsql||
'where rownum<='||
endindex;
if strwhere is
notnull
or strwhere<>
''then
strsql:
=strsql||
'and '||
strwhere;
endif;
if orderby is
notnull
or orderby<>
''then
strsql:
=strsql||
'order by '||
orderby;
endif;
strsql:='
select * from (
'||strsql||
') where ro >='||
startindex;
dbms_output.put_line(strsql);
open v_cur for
strsql;
end pager;
高效分頁儲存過程
高效分頁儲存過程 儲存過程與頁面呼叫如下 create procedure search sp tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸...
高效分頁儲存過程
儲存過程與頁面呼叫如下 create procedure search sp tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pageinde...
高效分頁儲存過程
儲存過程與頁面呼叫如下 create procedure search sp tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pageinde...