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代码窗口直接运行分页语句,查询没有问题。
[其他解释]
真给力。。一下就找到了。。。