Javaを使用してOracleプロシージャを呼び出していますが、これらのプロシージャの一部には、ネストされたテーブルタイプとしてOUTパラメータがあります。次に、ネストされたテーブルタイプのデータを処理する必要があり、それらのメタデータ(ネストされたテーブルの属性)も処理に必要です。
OracleCallableStatement stmt = null;
//Build the call here
StringBuilder call = new StringBuilder("{call ");
call.append(procName);
call.append("}");
System.out.println(call.toString());
conn = _motifUserDataSource.getConnection();
System.out.println("PREPARING : "+call.toString());
stmt = (OracleCallableStatement)conn.prepareCall(call.toString());
// The return parameter is an ARRAY type (nested table)
stmt.registerOutParameter(1, OracleTypes.ARRAY, "TABLE_NTT");
stmt.execute();
// Get the return value and covert it into a JDBC ResultSet
ARRAY array = (ARRAY) ((OracleCallableStatement)stmt).getOracleObject(1);
rs=array.getResultSet();
ResultSetMetaData metadata = rs.getMetaData();
問題: 上記のコードを試してみると、次のエラーが発生します
Caused by: java.sql.SQLException: Unsupported feature: getMetaData
at oracle.jdbc.driver.ArrayDataResultSet.getMetaData(ArrayDataResultSet.java:1013)
at com.Testdb.execCheckRefCursorData
処理段階で必要な属性/列名を識別するために、このメタデータが必要です。
ネストされたテーブルタイプのOUTパラメータを処理し、Resultsetを使用してそれらからデータとメタデータ情報の両方を抽出する方法に関する入力はありますか?