私はついに(他の人の助けを借りて)これに対する答えを見つけました。 3 つの部分で構成されています:
1 つ目は、
を使用する必要があることです。OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
私が使おうとしていた単純な JDBC CallableStatement ではありません。
2 番目の部分は、次のように "out" パラメータを登録する必要があったことです:
stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
3 番目の部分は、上記の第 2 部で暗黙のうちに示されていますが、「DATA_SUMMARY_TAB」は大文字でなければならないということでした。小文字で入力すると、次のような不可解なエラー メッセージが表示されます:
java.sql.SQLException: invalid name pattern: MYTEST.data_summary_tab
oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:553)で oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:469)で oracle.sql.StructDescriptor.initPickler(StructDescriptor.java:390)でoracle.sql.StructDescriptor.(StructDescriptor.java:320)
以上です。
また、カスタム オブジェクト タイプがどのパッケージにも含まれていないことに注意してください。そうであれば、3 番目のパラメーターを少しハックする必要があるかもしれません。