日期:2014-05-18  浏览次数:20456 次

求救,,关于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