我有代碼存儲過程返回sysrefcursor作爲OUT參數。PLSQL存儲過程返回sysrefcursor
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");
上面的代碼返回結果集光標,如果我關閉這個遊標則拋出在java端有個例外,任何人都可以幫我決定是否關閉RESULTSET。
更新:
是否需要關閉java中或ibatis xml中的oracle遊標。
有什麼例外?也可以使用函數返回類型sys_refcursor – 2010-12-20 06:53:24