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>