MyBatis вызывает хранимую функцию с возвращаемым значением и параметром out - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь вызвать такую ​​функцию:

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
}

Mapper:

<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 возвращает объект, но я получаю его как ноль.

Как мне вызвать этот тип функции и вернуть ее в POJO? Невозможно изменить его на ПРОЦЕДУРУ с обоими параметрами как OUT

1 Ответ

0 голосов
/ 07 мая 2018

Разобрался с этим, вот как я заставляю его работать:

<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 для обработки ответа.

...