Pages

Thursday, July 5, 2012

How to pass Oracle Table Type Object from Java Code to Oracle Stored Procedure

I had a requirement to pass Oracle Table Type Objects to a Store procedure. In this blog, I will explain how we can pass the Table type object from Java code.

The table type objects I used are: 
JTF_NUMBER_TABLE               //Table type of Number Type       JTF_VARCHAR2_TABLE_100  //Table type of Varchar2(100) Type
These two objects are input parameters to the stored procedure.

If you have Number, String Array as shown below:
Number[] srContactPointId = new Number[4];
String[] contactType = new String[4];   

These can be passed as Table type Object using the following code.

//Getting hold of the transaction
DBTransaction txn = (DBTransaction)wrsAmImpl.getDBTransaction();
OracleCallableStatement cstmt = (OracleCallableStatement)txn.createCallableStatement(cs, 1);

//Getting the Connection Object
Connection conn = cstmt.getConnection();

//Creating oracle.sql.ArrayDescriptor Object for corresponding Table Type Object.
ArrayDescriptor numberDescriptor =  new ArrayDescriptor("APPS.JTF_NUMBER_TABLE", conn);
ArrayDescriptor stringDescriptor =  new ArrayDescriptor("APPS.APPS.JTF_VARCHAR2_TABLE_100", conn);

//Creating oracle.sql.ARRAY object to be passed to the Oracle Stored Procedure
ARRAY contactPointId = new ARRAY(numberDescriptor , conn, contactPartyId);
ARRAY contType = new ARRAY(stringDescriptor , conn, contactType);

No comments:

Post a Comment