如何从 MyBatis 将 CURSOR 作为 Oracle 函数参数传递
How to pass a CURSOR as an Oracle Function parameter from MyBatis
我们使用 MyBatis 作为 ORM。我需要调用一个将游标作为参数的 Oracle 函数。如果 MyBatis 可以将 Java 对象映射到光标,那将是理想的,但我怀疑这是可能的。
知道怎么做吗?
请注意,我知道如何将从函数返回的游标映射到 Java 对象。反过来就是问题。
似乎唯一的解决办法是创建一个块,声明一个游标并手动将其传递给函数:
<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>
我们使用 MyBatis 作为 ORM。我需要调用一个将游标作为参数的 Oracle 函数。如果 MyBatis 可以将 Java 对象映射到光标,那将是理想的,但我怀疑这是可能的。
知道怎么做吗?
请注意,我知道如何将从函数返回的游标映射到 Java 对象。反过来就是问题。
似乎唯一的解决办法是创建一个块,声明一个游标并手动将其传递给函数:
<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>