Never used functions inside packages. Can you make a procedure instead? in
this case, we use the following:
<parameterMap id="parameterofProcedure class="HashTable">
<parameter property="RefCursor" column="REFCURSOR" direction="Output"
dbType="RefCursor"/>
</parameterMap>
and the <procedure> has a property names "parameterMap =
"parameterofProcedure" resultMap = "..."
With this, you just send an refcursor as parameter, and the refcursor is
opened and processed through the resultMap.
the Hashtable just uses:
Hashtable params = new Hastable();
params.add("RefCursor",null);
ISqlMapper.QueryForList<Widget>("GetWidgets", params)
Greetings!
Define a parameterMap in the procedure statement, and use something like
this:
On Wed, Jun 10, 2009 at 3:02 PM, Uwe Schmitz <[email protected]>wrote:
> I have the following package in an Oracle 9i Database Release 2; I’m
> using the Oracle Data Provider 11.1.0.6.20 and iBATIS DataMapper 1.6.1.
>
>
>
> Calling ISqlMapper.QueryForList<Widget>("GetWidgets", null) produces the
> following error:
>
>
>
> ORA-06550: line 1, column 7:
>
> PLS-00221: 'GET_WIDGETS' is not a procedure or is undefined
>
> ORA-06550: line 1, column 7:
>
> PL/SQL: Statement ignored
>
>
>
> A Google search reveals several articles about getting the Java DataMapper
> to work like this; the FAQ even features an article about using a REF CURSOR
> as an output parameter. No solution to this approach seems to be available.
>
>
>
> Any assistance getting this to work with would be appreciated.
>
>
>
>
>
> *Package Specification*
>
> Package WIDGETS_PKG As
>
> Function GET_WIDGETS Return SYS_REFCURSOR;
>
> End WIDGETS_PKG;
>
>
>
>
>
> *Package Body*
>
> Package Body WIDGETS_PKG As
>
> Function GET_WIDGETS Return SYS_REFCURSOR Is
>
>
>
> WIDGETS SYS_REFCURSOR;
>
>
>
> Begin
>
> Open WIDGETS For
>
> SELECT ID,
>
> NAME
>
> FROM WIDGETS
>
> ORDER BY ID;
>
>
>
> Return WIDGETS;
>
> End;
>
> End WIDGETS_PKG;
>
>
>
>
>
> *Widget Class*
>
> namespace Testing {
>
> public class Widget {
>
> public int Key {
>
> get;
>
> set;
>
> }
>
>
>
> public string Name {
>
> get;
>
> set;
>
> }
>
> }
>
> }
>
>
>
>
>
> *Data Map*
>
> <?xml version="1.0" encoding="utf-8" ?>
>
> <sqlMap namespace="Widget"
>
> xmlns="http://ibatis.apache.org/mapping"
>
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
>
> <alias>
>
> <typeAlias alias="Widget"
>
> type="Testing.Widget, Testing" />
>
> </alias>
>
> <statements>
>
> <procedure id="GetWidgets"
>
> resultMap="GetWidgetsResultMap">WIDGETS_PKG.GET_WIDGETS</
> procedure>
>
> </statements>
>
> <resultMaps>
>
> <resultMap id="GetWidgetsResultMap"
>
> class="Widget">
>
> <result property="Key"
>
> column="ID" />
>
> <result property="Name"
>
> column="NAME" />
>
> </resultMap>
>
> </resultMaps>
>
> </sqlMap>
>