调用oracle存储过程使用ResultSet的last方法 报错:出现对只转发结果集的无效操作: last

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用oracle存储过程使用ResultSet的last方法 报错:出现对只转发结果集的无效操作: last相关的知识,希望对你有一定的参考价值。

调用oracle存储过程返回cursor
用ResultSet接收,使用ResultSet的last方法 报错:
出现对只转发结果集的无效操作: last
部分代码:
CallableStatement call = con.prepareCall("call report_success_rate.showSuccessRate(?, ?, ?)");
call.setString(1, year);
call.setString(2, areaID);
call.registerOutParameter(3, OracleTypes.CURSOR);
call.execute();
ResultSet set = (ResultSet)call.getObject(3);
set.last();
System.out.println(set.getRow());

参考技术A 在创建Statement的时候需要指定参数允许指针滚动,参考如下:
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

各个参数参考如下:
ResultSet.TYPE_FORWARD_ONLY (略)
ResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
ResultSet.TYPE_SCROLL_SENSITIVE 双向滚动,并及时跟踪数据库里的更新,以便更改ResultSet中的数据。
ResultSet.CONCUR_READ_ONLY 只读取ResultSet
ResultSet.CONCUR_UPDATABLE 用ResultSet更新数据库追问

这样的网上很多, 都搜过了,试过了 不行才问的, 郁闷了
我这个是存储过程,不知道会不会有影响,反正就是不行···

参考技术B 参考答案:要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭

以上是关于调用oracle存储过程使用ResultSet的last方法 报错:出现对只转发结果集的无效操作: last的主要内容,如果未能解决你的问题,请参考以下文章

JAVA调用Oracle存储过程和函数

java调用Oracle分页存储过程

oracle存储过程 中把临时表数据 返回结果集

oracle的存储过程里怎样调用动态变量

用mybatis做oracle的储存过程

当前CallableStatement ou不是ResultSet,但是调用了getResultList(MySQL)