2

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を使用してそれらからデータとメタデータ情報の両方を抽出する方法に関する入力はありますか?

4

0 に答える 0