One of the issue we face in OAF is how to get Object from a Procedure. In this post we'll get String Array from Procedure.
Create a VARRAY in PlSql
CREATE OR REPLACE TYPE STR_ARRAY IS VARRAY(100) OF VARCHAR2(50);
Create a VARRAY in PlSql
CREATE OR REPLACE TYPE STR_ARRAY IS VARRAY(100) OF VARCHAR2(50);
Java code
//setting out parameter
OADBTransaction transaction = getOADBTransaction();
try{
try{
OracleCallableStatement cst = (OracleCallableStatement)transaction.createCallableStatement("begin apps.returnArray(:1,:2);end;",1);
cst.registerOutParameter(2, Types.ARRAY,
"APPS.STR_ARRAY");
cst.setString(1,"Hello");
cst.execute();
//returning array type variable
java.sql.Array arr = (java.sql.Array)cst.getObject(2);
//Reading Array
if (arr != null) {
String[] strArray = (String[])arr.getArray();
for (int i = 0; i
< strArray.length; i++)
System.out.println("array at "+i+":"+strArray[i]);
}
}catch(SQLException ex){
System.out.println(ex);
}
System.out.println(ex);
}