来源:http://blog.csdn.net/security08/article/details/5148586

执行以下代码,报错:

String querySQL = "{?=call p_sys_manager_csReport(?,?,?,?,?)}";
cstmt = conn.prepareCall(querySQL);
cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.setInt(2, modType);
cstmt.setInt(3, dptId);
cstmt.setInt(4, eplId);
cstmt.registerOutParameter(5, java.sql.Types.VARCHAR);
cstmt.registerOutParameter(6, java.sql.Types.VARCHAR);
rs = cstmt.executeQuery();
if (rs != null) {if (rs.next()) {companyTotal = rs.getInt("companyTotal");}
}
String temp = null;
temp = cstmt.getString(5);//此行报错

报错信息为:

java.sql.SQLException: Output parameters have not yet been processed. Call getMoreResults().
    at net.sourceforge.jtds.jdbc.ParamInfo.getOutValue(ParamInfo.java:159)
    at net.sourceforge.jtds.jdbc.JtdsCallableStatement.getOutputValue(JtdsCallableStatement.java:116)
    at net.sourceforge.jtds.jdbc.JtdsCallableStatement.getString(JtdsCallableStatement.java:310)

报错信息说得很明白,就是输出结果参数未处理,必须调用getMoreResults()方法以判断是否还有结果集。

然后修改代码,问题解决:

String querySQL = "{?=call p_sys_manager_csReport(?,?,?,?,?)}";
cstmt = conn.prepareCall(querySQL);
cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.setInt(2, modType);
cstmt.setInt(3, dptId);
cstmt.setInt(4, eplId);
cstmt.registerOutParameter(5, java.sql.Types.VARCHAR);
cstmt.registerOutParameter(6, java.sql.Types.VARCHAR);
rs = cstmt.executeQuery();
if (rs != null) {if(rs.next()) {companyTotal = rs.getInt("companyTotal");}
}
String temp = null;
/**记录集获取到后,把rs记录集循环取出后或者调用cstmt.getMoreResults()方法后,sqlserver才会处理output返回值
*/
if (!cstmt.getMoreResults()) {//此行判断是否还有更多的结果集,如果没有,接下来会处理output返回参数了temp = cstmt.getString(5);//此行不再报错
}

其中改为以下代码也不报错:

if (rs != null) {while(rs.next()) {//if改为whilecompanyTotal = rs.getInt("companyTotal");}
}
String temp = null;
/** 去掉cstmt.getMoreResults(),将上面的if(rs.next()) 改为while(rs.next())也不报错
*/
//if (!cstmt.getMoreResults()) {temp = cstmt.getString(5);//此行不再报错
//}

java调用存储过程同时获取[返回参数]和[结果集]相关推荐

  1. Java调用存储过程返回数组

    Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMB ...

  2. Java调用存储过程(返回:简单类型VARCHAR、自定义对象STRUCT、列表数组VARRAY)

    ORACLE 存储过程 练习七 数组专题 写在前面的废话 由于工作需要经常用到 ORACLE存储过程 其中数组是不可避免的一组成元素.那么让我们来体会一下 ORACLE存储过程的数组到低是如何使用的. ...

  3. java使用集合存储过程_详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map 发布于 2020-5-1| 复制链接 摘记: 详解java调用存储过程并封装成map           本文代码中注释写的比较清楚不在单独说明,希望能帮助到大 ...

  4. oracle 定时任务 job 调用存储过程有回到输出参数(含out参数)

    oracle 定时任务 job 调用存储过程有返回输出参数(含out参数) 因前台调用一个含有OUT参数的存储过程,同时在JOB里也想调用同一个存储过程,不想将OUT参数去掉重新建一个存储过程再被JO ...

  5. java调用存储过程之环境测试

    ----oracle10g ojdbc14.jar ----oracle11g ojdbc6.jar <?xml version="1.0" encoding="U ...

  6. java:axis2环境下获取方法参数名的另一种方法

    java本身提供的方法不能获取方法的参数名的,只能获取每个参数的类型 比如: public String concatString(String param1,String param2){retur ...

  7. java 调用存储过程structdescriptor,Java调用oracle存储过程,集合入参的正确姿势

    这是我工作之前遇到的一个需求,Java调用存储过程,入参是集合.踩了一些坑,决定写个干货,和大家分享下. 项目使用的oracle版本: com.oracle ojdbc6 11.2.0.1.0 sys ...

  8. oracle调用存储过程输出,oracle中存储过程调用存储过程(带有返回结果集)

    在oracle中,存储过程是可以调用存储过程的.其中,被调用的存储过程可以带返回游标的结果集,或者是一个定义的变量,两者都可以,在实现过程中几乎没什么差别.在调用的存储过程,要注意写好对应的游标或者定 ...

  9. Java 调用存储过程 返回结果集

    这里使用Oracle数据库的thin连接. 下面是存储过程SQL 1 createorreplaceprocedure proc3(stid in student.stuid%type, stname ...

最新文章

  1. cic曲线是什么_贝塞尔曲线基本用法
  2. 解题报告:Fake Maxpooling(单调队列求矩阵的和)
  3. 重现2篇Nature中GraPhlAn绘制的超高颜值物种树Cladogram
  4. crowd counting_[Crowd_Counting]-PGCNet-ICCV2019
  5. Centos6安装Zabbix3.4
  6. 语言五子棋无ai程序框图_微软多语言预训练模型T-ULRv2登顶XTREME排行榜
  7. Facebook 的 PHP 性能与扩展性
  8. ECMAScript 运算符--逗号运算符
  9. 叫板抖音,运营商入局短视频
  10. 人脸对齐(十六)--DenseFA
  11. 如何安装 chrome 开发版
  12. 漫画算法python篇pdf_漫画算法:小灰的算法之旅(Python篇)(全彩)
  13. 电脑无法安装SecoClient
  14. 【Code】浅谈Pascal转C++
  15. ftl有三种映射地址_ftl 入门
  16. 毕业设计 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别
  17. MC指令java,我的世界Java版指令有哪些-我的世界Java版常用指令分享-沧浪手游
  18. csp-j2第四题解
  19. 【踩坑】Linux java中ftp下载文件,解压文件损坏,以及图片下载打开只显示下载路径的问题
  20. 编程范式:函数式编程防御式编程响应式编程契约式编程流式编程

热门文章

  1. 【HTML/CSS】SEO的概念和实现
  2. 02 复习流程语句 以及跳转语句
  3. bzoj 1596 电话网络
  4. springboot入门_模板
  5. 50 days before NOI2017
  6. Ubuntu10.04下安装Ns2的一系列错误及解决方案
  7. linux 学习操作小计
  8. 屌丝程序员的那些事(一)-毕业那年
  9. windows下的_mkdir函数
  10. ubuntu下查看window下文本文件乱码的解决方法