Wednesday, May 27, 2009

How to fill VARRAY/TABLETYPE object in iBatis



Sample:

Step 1: Create DEMO_TABLE_TYPE as the following structure:
create or replace TYPE DEMO_TABLE_TYPE AS OBJECT
(
id NUMBER, name NVARCHAR2(35)
);

Step 2: Write demoProcedure as the following structure:
demoProcedure(
demoTType
) IS
BEGIN
INSERT INTO DEMOTABLE( ID, NAME) VALUES ( demoTType.ID,demoTType.NAME); END demoProcudre;

Step 3: create a sql map id in sql-map-xxx.xml like as follows:

<procedure id="demoProc" parameterClass="map">
<![CDATA[{call
DECLARE
demoTType DEMO_TABLE_TYPE := DEMO_TABLE_TYPE();
idx BINARY_INTEGER := 1;
BEGIN
]]>
<iterate property="list">
<![CDATA[
demoTType .extend(1);
demoTType (idxLF) := DEMO_TABLE_TYPE(
#demoTType[].id:NUMERIC#,
#demoTType[].name:VARCHAR#
);
idx := idx + 1;
]]>
</iterate>
<![CDATA[
demoProcedure(
demoTType
);
END}
]]>
</procedure>

No comments:

Post a Comment