日期:2014-05-17  浏览次数:20871 次

oracle存储过程分页问题求解
今天自己写了一个测试的项目,研究了一下oracle存储过程分页的问题,闲话少说先看代码:
procedure getrows(
  v_tablename varchar, --表名
  stanum integer, --开始
  endnum integer, --结束
  x_cur out XCH_CURSOR --返回
)
as 
v_sql varchar(200);
begin
      v_sql:='select b.zgxm,c.dwmc,a.* from 

                     (select b.* from (select a.*,rownum as rn from (select * from '|| v_tablename ||') a 
                     where rownum<='|| endnum ||') b where rn>='|| stanum ||' ) a 
                     left join h_grxx b on a.grzh=b.grzh
                     left join h_dwxx c on a.dwzh=c.dwzh' ;
      open x_cur for v_sql;
  end getrows;


这个存储过程分页是没有问题,我能够看到查询到的数据,但是当我的页码变的很大即我的stanum值和endnum值变得很大的时候我就不能查看了。
我查询的这张表有4044912行数据,测试的时候如果查询的数据超过一定范围就查不到了报错是下图:
希望路过的高手不吝赐教!
------最佳解决方案--------------------
是否是你v_sql varchar(200)定义的过小,你可以加大点试试。
------其他解决方案--------------------
我来补充点:
在sql/plus代码窗口直接运行分页语句,查询没有问题。
------其他解决方案--------------------
真给力。。一下就找到了。。。