ibatis连接oracle数据库,调用过程返回游标值为空

maogeer 2011-02-12 10:53:50
今天使用struts+spring+ibatis+oracle写个小程序,遇到个问题,麻烦大侠出手。
为什么下边的int result = (Integer) map.get("o_user_result");可以取到值,
而ResultSet rs = (ResultSet) map.get("o_user_list");却取不到值???????

sqlmap配置如下:

<parameterMap id="p_queryuserlist_param" class="java.util.HashMap">
<parameter property="o_user_list" javaType="java.sql.ResultSet" jdbcType="ORACLECURSOR" mode="OUT"/>
<parameter property="o_user_result" javaType="java.lang.Integer" jdbcType="INTEGER" mode="OUT"/>
</parameterMap>
<procedure id="p_queryuserlist" parameterMap="p_queryuserlist_param">
{ CALL p_queryuserlist(?,?)}
</procedure>


java代码如下:

Map<String, Comparable> map = new HashMap<String, Comparable>(4);
map.put("o_user_list", null);
map.put("o_user_result", null);
getSqlMapClientTemplate().queryForObject("p_queryuserlist", map);

ResultSet rs = (ResultSet) map.get("o_user_list");
int result = (Integer) map.get("o_user_result");

if (0 != result || null == rs) {//result=0,而rs为空。。。。。。。。。。
if (null != rs) {
rs.close();
}
userResponse.setResult(result);
return userResponse;
}


存储过程如下:

create or replace procedure p_queryuserlist
(o_user_list out pub_package.sys_cursor,
o_user_result out int) as
begin
o_user_result := 1;

open o_user_list for
select t.user_id,
t.user_name,
t.user_password,
t.user_tel,
t.user_status,
t.user_privs
from t_users t;

o_user_result := 0;
exception
when others then
o_user_result := 1;
IF o_user_list %ISOPEN THEN
CLOSE o_user_list;
END IF;
end p_queryuserlist;
...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
maogeer 2011-04-27
  • 打赏
  • 举报
回复
这个确实是取不到值,解决办法就是在xml映射下返回结果集。
  • 打赏
  • 举报
回复
一步步 调试 ,看值传到哪了






希望对你有帮助
maogeer 2011-02-13
  • 打赏
  • 举报
回复
自己顶,等人来
maogeer 2011-02-13
  • 打赏
  • 举报
回复
自己顶,等人来
别人家的老公 2011-02-13
  • 打赏
  • 举报
回复
楼上说得对
crazystone83 2011-02-13
  • 打赏
  • 举报
回复

map.put("o_user_list", null);
map.put("o_user_result", null);
getSqlMapClientTemplate().queryForObject("p_queryuserlist", map);

ResultSet rs = (ResultSet) map.get("o_user_list"); int result = (Integer) map.get("o_user_result");

存的是空,取出来也是空哦
sun0322 2011-02-13
  • 打赏
  • 举报
回复
如果返回的是个集合,也应该用ForObjectList
sun0322 2011-02-13
  • 打赏
  • 举报
回复
还有,使用了ibaits连接,哪里还需要ResultSet
sun0322 2011-02-13
  • 打赏
  • 举报
回复
map=(HashMap)getSqlMapClientTemplate().queryForObject("p_queryuserlist", map);

81,094

社区成员

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

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