輸入order by 的sqeuence是,應該為「 desc」或者「 asc」
若輸入兩個order by則,v_order_field=" a[sequence] ,order by b "
create or replace procedure tablepage_select(v_page_size int, --the size of a page of list
v_current_page int, --the current page of list
v_table_name varchar2, --the talbe name
v_order_field varchar2,--the order field
v_order_sequence varchar2,--the order sequence should by "_desc"or "_asc",_is blank.
--v_sql_select varchar2, --the select sql for procedure
--v_sql_count varchar2, --the count sql for procedure
--v_out_recordcount out int, --the num of return rows
p_cursor out refcursor_pkg.return_cursor) as
v_sql varchar2(3000); --the sql for select all rows of list
v_sql_count varchar2(3000); --the count sql for procedure
v_sql_order varchar2(2000); --the order of list
v_count int; -- the amount rows fo original list
v_endrownum int; --the end row num of the current page
v_startrownum int; --the start row num of the current page
begin
----set the order of list
if v_order_field!='no' then
v_sql_order :=' order by '|| v_order_field ||' '||v_order_sequence;
else
v_sql_order :='';
end if;
----catch the amount rows of list
v_sql_count:='select count(rownum) from '||v_table_name;
execute immediate v_sql_count into v_count;
-- v_out_recordcount := v_count;
----set the value of start and end row
if v_order_sequence='desc' then
v_endrownum:=v_count-(v_current_page-1)*v_page_size;
v_startrownum:=v_endrownum - v_page_size + 1;
else
v_endrownum:= v_current_page * v_page_size;
v_startrownum := v_endrownum - v_page_size + 1;
end if;
----the sql for page slide
v_sql := 'select * from (select '||v_table_name||'.*, rownum rn from '||v_table_name||' where rownum <= ' ||
to_char(v_endrownum) ||' '|| v_sql_order||') where rn >= ' ||
to_char(v_startrownum)||' '||v_sql_order;
open p_cursor for v_sql;
end tablepage_select;
帶排序的oracle分頁儲存過程
create or replace package pager istype curs is ref cursor procedure pagination inpagesize in integer,每頁記錄數 inpageindex in integer,當前頁數 intablename in ...
sql分頁儲存過程,帶求和 排序
create procedure dbo sp tbtest query pagesize int,每頁多少條記錄 pageindex int 1,指定當前為第幾頁 pagecount int output,返回總頁數 recordcount int output,記錄總和 orderfield v...
oracle分頁儲存過程
page slide procedure author robert.c time 2006.11.17 create or replace procedure tablepage select v page size int,the size of a page of list v current...