【问题标题】:MyBatis call stored function with returning value and out parameterMyBatis 调用带有返回值和输出参数的存储函数
【发布时间】:2018-05-07 19:53:54
【问题描述】:

我正在尝试调用这样的函数:

PCK_BEE.FUN_FOO(A IN VARCHAR2, B OUT T_CURSOR) RETURN VARCHAR2;
--
TYPE T_CURSOR IS REF CURSOR;
--
TYPE R_DEP  IS RECORD (P_CODE VARCHAR2(3),  P_DESC   VARCHAR2(30));

在 MyBatis 上我创建了一个对象:

public class LovPrc {
   private List<ProcedureTypeLov> lov;
   private String error;

   // Getters and Setters
}

ProcedureTypeLov:

public class ProcedureTypeLov {
   private String code;
   private String description;

   // Getters and Setters
}

映射器:

<select id="lovDep" resultType="LovPrc" parameterType="map" 
           statementType="CALLABLE">
    { #{error, mode=OUT, jdbcType=VARCHAR} = call 
        PCK_BEE.FUN_FOO(#{A, mode=IN,
                        #{lov, jdbcType=CURSOR, 
                              mode=OUT, resultMap=LovPrc, javaType=java.sql.ResultSet})}
</select>

POJO 正在返回对象,但我将其设为 null。

我应该如何调用这种类型的函数并在 POJO 上返回它?不能将其更改为两个参数都为 OUT 的 PROCEDURE

【问题讨论】:

    标签: java oracle mybatis


    【解决方案1】:

    处理了这个,这就是我的工作方式:

    <select id="lovDep" parameterType="LovPrc" statementType="CALLABLE">
    { #{error,jdbcType=VARCHAR,mode=OUT} = call PCK_BEE.FUN_FOO(#{A, mode=IN, jdbcType=VARCHAR},
                                                                #{lov, jdbcType=CURSOR, resultMap=MapLov, mode=OUT})}
    </select>
    
    <resultMap id="MapLov" type="ProcedureTypeLov">
         <result column="A (name of the column returned by CURSOR)" property="a"/>
    </resultMap>
    

    LovPrc 作为参数 Object 用于调用和 out Object 来处理响应。

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 1970-01-01
      • 2013-01-27
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多