У меня есть хранимая процедура кода, которая возвращает sysrefcursor в качестве параметра OUT.
CREATE OR REPLACE PROCEDURE report (rvdate IN VARCHAR2,RESULTSET OUT NOCOPY sys_refcursor)
AS
..
...
.
OPEN RESULTSET FOR (SELECT A.* FROM TEMP_DATA )
...
..
CLOSE RESULTSET
END;
/
Вызов этой процедуры из конфигурации ibatis xml
<parameterMap id="inputParam" class="map">
<parameter property="date" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="output" javaType="java.sql.ResultSet" jdbcType="ORACLECURSOR" resultMap="rec-map" mode="OUT"/>
</parameterMap>
<procedure id="readReport" parameterMap="inputParam" >
<![CDATA[{ call report(?,?) } ]]>
</procedure>
И в Java я делаю это
java.util.Map map = new java.util.HashMap();
map.put("date", date);
System.out.println("date" + date);
xmlconfig.queryForObject("readReport", map);
return (List)map.get("output");
Приведенный выше код возвращает курсор RESULTSET, если язакройте этот курсор, затем он выдаст исключение в java end.anybody, помогите мне закрыть ли RESULTSET или нет ..
Обновление:
Нужно ли мне закрыть курсор оракула в Javaили в ibatis xml.