求救,,关于oracle分页存储过程问题,在线的朋友帮帮忙!在线等
这是从网上DOWN下来的存储过程,现在问题就是只显示一页数据,本来有几页的数据,它只显示一页数据,不知道是不是这个存储过程的问题?
在CSDN找了很多,关于ORACLE的分页存储过程资料很少,所以求救各位!在线等,希望各位能帮帮忙.
PROCEDURE UP_GetRecordByPage
(
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_out_recordcount OUT int, --the num of return rows
p_cursor OUT ref_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!= ' ' 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