Ibatis调用Oracle存储过程有哪些呢?
Ibatis调用Oracle存储过程有哪些呢?
通过数据库查询一组数据,数据中包含一个表中的一条数据、2个String类型的字符串,想通过Oralce的存储过程实现。 ibatis映射配置: //存储过程传入参数 //存储过程传出参数 //存储过程传出参数 //存储过程传出参数 {call P_DJ_GETRYANDPYRBYRYID(?)} //我的存储过程 Service类调用Ibatis的代码: Map paramMap = new HashMap(); paramMap。
put("v_ryid", primaryKey); List list = DBUtil。getObjectList("T_Dj_Ry。P_DJ_GETRYANDPYRBYRYID", paramMap); //这个是我们自己封装的工具,主要操作Ibatis,这里可以看成Ibatis查询并返回List结果。
Map map = new HashMap(); map。put("PYR_IDS", paramMap。get("PYR_IDS")); //传回的两个参数 map。put("PYR_XMS", paramMap。get("PYR_XMS")); map。
put("MY_CUR", list); 至于我的存储过程就不写出来了,没什么需要特殊写明的,只是数据库的一些关联查询,比较麻烦,就不贴出来了。 运行起来后,没成功。。。。 提示的错误信息要求检查输出类型: --- Check the output parameters (register output parameters failed)。
--- Cause: java。sql。SQLException: 无效的列类型 在Google上百度了一下,大部分的人问题的原因都是在Ibatis映射配置时,传入传出的参数中jdbcType与JavaType的类型不正确,可是我多番验证,我的类型是正确的。
同时我将传出的参数一个个的减少,直到没有传出参数才能正常运行。真的郁闷了。。。。 经过几个小时的纠结,终于发现问题的所在了。 在Ibatis映射配置中,当我调用存储过程中,需要使用?进行参数的占位符,而这个参数不能只写入参,还要写出参。。
。。 也就是说,我的Ibatis映射配置中调用存储过程的代码应该这样写: {call P_DJ_GETRYANDPYRBYRYID(?,?,?,?)} 欲哭无泪啊!!!! 这样程序终于运行起来了,生活还要继续,问题还要继续产生啊! 。
答:指令名详解 call 指令(过程调用)(控制指令-长转移) 详解: 段内直接调用 段内间接调用(寄存器) 段内间接调用(存储器) 段间直接调用 段间间接调用详情>>
问:深度技术 Windows 7 快速安装版 V2015(64位) 下载好在电脑 如...
答:硬盘安装(适合无光驱或者不想浪费光盘的用户,但是需要你有一个可以使用的Windows系统) 请提取ISO中的“WINXPSP3.GHO”和“GHO镜像安装器.E...详情>>
答:网卡驱动安装下 本地连接有吗详情>>