爱问知识人 爱问教育 医院库

Ibatis调用Oracle存储过程有哪些呢?

首页

Ibatis调用Oracle存储过程有哪些呢?

Ibatis调用Oracle存储过程有哪些呢?

提交回答

全部答案

    2017-07-28 10:54:08
  •   通过数据库查询一组数据,数据中包含一个表中的一条数据、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(?,?,?,?)}  欲哭无泪啊!!!!  这样程序终于运行起来了,生活还要继续,问题还要继续产生啊! 。
      

    w***

    2017-07-28 10:54:08

类似问题

换一换

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):