在mybatis中调oracle dblink存储过程

写在前面:在mybatis中操作oracle的数据,不复杂,也不困难。只是第一次用,入了很多坑,记录一下。在此之前需要一些简单的配置,此前一篇博客已经做了简单叙述:

  

https://www.cnblogs.com/studentc/p/11078229.html

调用oracle存储过程,这里只写出mapper.xml,其他的基本与操作mysql类似。

<select id="ccgc" statementType="CALLABLE" parameterType="int" resultType="Integer">
{call user.one(#{id,mode=IN,jdbcType=INTEGER},
  #{age,mode=OUT,jdbcType=INTEGER})}
</select>

注:这里必须写一个注意,因为就是这么一段简单的sql,耗了我几个小时。唉,是我太水了,必须记录一下。

  1.statementType="CALLABLE" 表明调用的是一个存储过程

  2. user.one:one是存储过程的名字, 调用存储过程时,最好是包名.存储过程名,不然很多时候会找不到该过程而报错。

  3.如果是入参,记得加mode=IN,IN切记大写,否则报错。如果有输出参数,记得加mode=OUT,否则报错,找不到out参数。然后你把错误信息cv去找度娘,花了很多时间,看了很多文章,试了很多操作,却依然无果。其实并不是什么很复杂的问题,可能仅仅是因为少了mode=OUT。至少我是如此。

通过dblink调存储过程

  dblink中调存储过程,只需在过程名后加@dblink名字,然后再写参数,没有其他太需要注意的地方。

<insert id="add" statementType="CALLABLE" parameterType="string">
      {call USER.USERADD@DBLINK_USER.ADD
          (#{NAME,mode=IN,jdbcType=VARCHAR},
            #{SEX,mode=IN,jdbcType=VARCHAR})}
</insert>

猜你喜欢

转载自www.cnblogs.com/studentc/p/11090055.html