Java-超出打开游标的最大数,___分页存储过程中游标打开超过最大数___的有关问题...

当前位置:我的异常网» Java Web开发 » ___分页存储过程中游标打开超过最大数___的有关问题

___分页存储过程中游标打开超过最大数___的有关问题

www.myexceptions.net  网友分享于:2013-12-27  浏览:26次

___分页存储过程中游标打开超过最大数___的问题

每次调用下面的分页存储过程次数多了以后就会报:java.sql.SQLException:   ORA-01000:   超出打开游标的最大数

看了一下应该是这一句:OPEN   p_OutCursor   FOR   v_sql;

游标打开了以后没有及时关闭,但是p_OutCursor游标是作为存储过程的输出参数返回记录集的:p_OutCursor   out   refCursorType   ,在存储过程内是不能关闭的,那应该在哪里关闭这个游标呢???

**********************************************

--创建分页package:

create   or   replace   package   CURSPKG   as

TYPE   refCursorType   IS   REF   CURSOR;

procedure   sp_Page

(

p_PageSize               int,--每页记录数

p_PageNo                   int,--当前页码,从   1   开始

p_SqlSelect             varchar2,--查询语句,含排序部分

p_SqlCount               varchar2,--获取记录总数的查询语句

p_OutRecordCount   out   int,--返回总记录数

p_OutCursor             out   refCursorType

);

end;

/

--创建分页package   body:

create   or   replace   package   body   CURSPKG   is

procedure   sp_Page

(

p_PageSize               int,--每页记录数

p_PageNo                   int,--当前页码,从   1   开始

p_SqlSelect             varchar2,--查询语句,含排序部分

p_SqlCount               varchar2,--获取记录总数的查询语句

p_OutRecordCount   out   int,--返回总记录数

p_OutCursor             out   refCursorType

)

is

v_sql               varchar2(3000);

v_count           int;

v_heiRownum   int;

v_lowRownum   int;

begin

----取记录总数

execute   immediate   p_SqlCount   into   v_count;

p_OutRecordCount   :=   v_count;

----执行分页查询

v_heiRownum   :=   p_PageNo   *   p_PageSize;

v_lowRownum   :=   v_heiRownum   -   p_PageSize   +   1;

v_sql   :=   'SELECT   *   FROM   (SELECT   A.*,   rownum   rn

FROM   ( '   ||   p_SqlSelect   ||   ')   A

WHERE   rownum   <=   '   ||   to_char(v_heiRownum)   ||   ')   B

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值