SQL>CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF
VARCHAR2(30)
SQL>/
然后创建下面的函数,它返回一个
VARRAY。
CREATE OR REPLACE FUNCTION getEmpArray RETURN EMPARRAY AS
l_data EmpArray := EmpArray();
CURSOR c_emp IS SELECT ename FROM EMP;
BEGIN FOR emp_rec IN c_emp LOOP
l_data.extend;
l_data(l_data.count) := emp_rec.ename;
END LOOP;
RETURN l_data;
END;
stmt =(OracleCallableStatement)conn.prepareCall
( "begin ? := getEMpArray; end;" );
// The name we use below, EMPARRAY, has to match the name of the
// type defined in SQL
stmt.registerOutParameter( 1, OracleTypes.ARRAY,"EMPARRAY" );
stmt.executeUpdate();
//Get the ARRAY object and print some meta data about it
ARRAY simpleArray = stmt.getARRAY(1);
System.out.println("Array is of type " + simpleArray.getSQLTypeName());
System.out.println("Array element is of type code " +simpleArray.getBaseType());
System.out.println("Array is of length " + simpleArray.length());
// Print the contents of the array
String[] values = (String[])simpleArray.getArray();
for( int i = 0; i < values.length; i++ )
System.out.println( "row " + i + " = '" + values +"'" );
} catch (SQLException se) {
System.out.println(se.toString());
} catch (Exception e) {
System.out.println(e.toString());
} finally {
try {
stmt.close();
conn.close();
} catch (SQLException se) {
System.out.println(se.toString());
}
}
}
}