jdbcTemplate调用存储过程的问题

skfwjndpx 2010-01-13 11:44:05
请教高手,有用spring 的jdbcTemplate调用存储过程的没有?
我调用存储过程时参数可以返回,但是结果集却不能返回,是什么原因?

部分代码:
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
cs.setInt(2,int_pageNumber);
cs.setInt(3,int_currentPage);
cs.setString(4,hql.toString());
cs.registerOutParameter(1, Types.INTEGER);
ResultSet rs = cs.executeQuery();
int totalCount = cs.getInt(1);
System.out.println("totalCount::"+totalCount);
System.out.println("ddd:"+rs.getRow());

第一句输出没问题,第二输出的记录数就是0了

存储过程中是用exec sp_executesql执行的查询语句,这个是没有问题的

请问高手们,可能出现的问题在哪?
...全文
292 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
succinite 2010-02-01
  • 打赏
  • 举报
回复
jdbcTemplaate.execute()方法,实现两个接口CallableStatementCreator和CallableStatementCallback
实现接口CallableStatementCreator的类中
cs = conn.prepareCall(storedProcName.toString());
cs.registerOutParameter(1, OracleTypes.CURSOR); --定义的第一个参数是游标
cs.setObject(2, params);--定义的第二个参数是要传进去的值

在你的doInCallableStatement方法中,
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(1);

取到ResultSet ,剩下的你会了吧。
skfwjndpx 2010-01-14
  • 打赏
  • 举报
回复
自己顶一下:

有提到说这里:
cs.execute();
ResultSet rs = cs.getResultSet();
可我这样改后,还是不行

25,979

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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