Как передать CURSOR в качестве параметра функции Oracle из MyBatis - PullRequest
1 голос
/ 28 марта 2019

Мы используем MyBatis для ORM.Мне нужно вызвать функцию Oracle, которая принимает курсор в качестве параметра.Было бы идеально, если бы MyBatis мог сопоставить объект Java с курсором, но я сомневаюсь, что это возможно.

Любые идеи, как это сделать?

Обратите внимание, что я знаю, как отобразить курсор, который вернулсяиз функции в объект Java.Другой путь - проблема.

1 Ответ

0 голосов
/ 02 апреля 2019

Кажется, что единственное решение - создать блок, объявить курсор и передать его функции вручную:

<select id="..." parameterType="..." statementType="CALLABLE">
    declare
          my_cursor SYS_REFCURSOR;
    begin
          OPEN my_cursor FOR
                    <foreach item="item" collection="..." separator=" union all ">
                    SELECT #{item.key} as key, ... FROM dual
                    </foreach> ;

        #{result,jdbcType=CURSOR,mode=OUT,resultMap=...,javaType=java.sql.ResultSet} := our_function(my_cursor => my_cursor);
    end;
</select>
...