分頁儲存過程

2022-05-04 08:15:09 字數 2551 閱讀 3103

create

orreplace

procedure

prc_query

(p_tablename

invarchar2, --

表名 p_strwhere in

varchar2, --

查詢條件

p_ordercolumn in

varchar2, --

排序的列

p_orderstyle in

varchar2, --

排序方式

p_curpage in out number, --

當前頁 p_pagesize in out number, --

每頁顯示記錄條數

p_totalrecords out number, --

總記錄數

p_totalpages out number, --

總頁數 v_cur out sys_refcursor) --

返回的結果集

isv_sql

varchar2(1000) :=

''; --

sql語句

v_startrecord number; --

開始顯示的記錄條數

v_endrecord number; --

結束顯示的記錄條數

begin

--記錄中總記錄條數

v_sql :=

'select to_number(count(*)) from

'|| p_tablename ||

'where 1=1';

if p_strwhere is

notnull

or p_strwhere <>

''then

v_sql :

= v_sql ||

p_strwhere;

endif;

execute immediate v_sql into

p_totalrecords;

--驗證頁面記錄大小

if p_pagesize <

0then

p_pagesize :=0

;

endif

;

--根據頁大小計算總頁數

if mod(p_totalrecords,p_pagesize) =

0then

p_totalpages :

= p_totalrecords /

p_pagesize;

else

p_totalpages :

=floor( p_totalrecords / p_pagesize) +1;

endif;

--驗證頁號

if p_curpage <

1then

p_curpage :=1

;

endif

;

if p_curpage > p_totalpages then

p_curpage :

=p_totalpages;

endif;

--實現分頁查詢

v_startrecord := (p_curpage -

1) * p_pagesize +1;

v_endrecord :

= p_curpage *

p_pagesize;

v_sql :='

select * from (select a.*, rownum r from '||

'(select * from '||

p_tablename;

if p_strwhere is

notnull

or p_strwhere <>

''then

v_sql :

= v_sql ||

'where 1=1'||

p_strwhere;

endif;

if p_ordercolumn is

notnull

or p_ordercolumn <>

''then

v_sql :

= v_sql ||

'order by

'|| p_ordercolumn ||''

||p_orderstyle;

endif;

v_sql :

= v_sql ||

') a where rownum <=

'|| v_endrecord ||

') b where r >= '||

v_startrecord;

dbms_output.put_line(v_sql);

open v_cur for

v_sql;

end prc_query;

分頁儲存過程 分頁儲存過程

分頁儲存過程 alter proc dbo p pageshow pagesize int,每頁大小 currentpage int out,當前頁 housename nvarchar 50 房產名稱 totalcount int out,總記錄數 totalpage int out 總頁數 as...

分頁儲存過程

create proc p sobigo percentpage tblname varchar 255 t category 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pag...

分頁儲存過程

create procedure pro select pageindex int,pagesize int as select student.sno,student.sname,student.s grade.math,grade.physics,grade.huaxue,grade.chine...