jdbc调用带游标返回的存储过程,返回为空怎么判断(SQL当中带sum())

walkman154 2008-04-03 02:58:47

具体代码如下,由于最终返回的结果集当中每列都是sum()
具体语句结果为下
select sum(a),sum(b),sum(c) from
(select sum(),sum(),sum() from B where xxxxxx);

子查询当中没有结果集,但是外层的汇总对还是会有一条记录,记录当中的所有记录都是空.
用resultset的next()判断还是会有记录。用rs.get.....方法的时候会有空指针异常
有什么什么比较好的方法吗,除了手动去判断是否为空。


CallableStatement call = conn.prepareCall("{call VF_P_QUREY_PRO.vf_qurey_pro_sum(?,?,?,?)}");
//分别对应机构ID,起始日期,终止日期,返回游标。
call.setString(1,organId);
call.setString(2,beginDate);
call.setString(3,endDate);
call.registerOutParameter(4, OracleTypes.CURSOR);
call.registerOutParameter(4, OracleTypes.CURSOR);
call.execute();//查询结果集是否为空 true:表示有结果集,false:无结果集

ResultSet rs = (ResultSet)call.getObject(4);
while(rs.next()){
System.out.print(rs.getBigDecimal(1)+" ");
}

...全文
381 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloWorld_001 2008-04-03
  • 打赏
  • 举报
回复
你sum(a)
所有a is null出来就是null
可以修改下sql,
nvl(sum(a),0)
许毕峰 2008-04-03
  • 打赏
  • 举报
回复
sum是累加,而任何的null值做四则运算得到的结果都是null,所以sum也是会返回null值的
可以再最终的sql语句把null处理成零,这样就没有空指针了。
select nvl(sum(a),0),nvl(sum(b),0),nvl(sum(c),0) from
£¨select sum(),sum(),sum() from B where xxxxxx£©;
ehsgs 2008-04-03
  • 打赏
  • 举报
回复
你吧保存sum(a),sum(b),sum(c)的变量定义成int型并且初始值赋为0

这样应该就不会报空指针异常了
ehsgs 2008-04-03
  • 打赏
  • 举报
回复
sum返回的是一个int值啊

怎么会是空呢

按照你写的sql最后肯定是有一条记录的,是0,0,0

然后你可以根据业务需要看是否要处理sum值是0的记录

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧