首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

求救,关于oracle分页存储过程有关问题,在线的朋友帮帮忙

2013-03-26 
求救,,关于oracle分页存储过程问题,在线的朋友帮帮忙!在线等这是从网上DOWN下来的存储过程,现在问题就是只

求救,,关于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   '||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   UP_GetRecordByPage;
end   PAGE_XFGLXT;

[解决办法]
Oracle?不懂
我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html

热点排行