Saya akhirnya (dengan sedikit bantuan dari orang lain) menemukan jawabannya. Itu datang dalam tiga bagian:
Yang pertama adalah saya perlu menggunakan:
OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
daripada JDBC CallableStatement sederhana yang saya coba gunakan.
Bagian kedua adalah saya harus mendaftarkan parameter "keluar" saya sebagai berikut:
stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
Bagian ketiga, dan tersirat dalam bagian 2 di atas, adalah bahwa "DATA_SUMMARY_TAB" harus dalam KASUS UPPER. Jika Anda memasukkannya ke dalam huruf kecil, maka Anda mendapatkan pesan kesalahan samar sebagai berikut:
java.sql.SQLException: invalid name pattern: MYTEST.data_summary_tab
di oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:553)di oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:469)di oracle.sql.StructDescriptor.initPickler(StructDescriptor.java:390) oracle.sql.StructDescriptor.(StructDescriptor.java:320)
Itu saja.
Juga, harap perhatikan jenis objek khusus kami tidak ada dalam paket apa pun. Jika ya, Anda mungkin perlu sedikit meretas parameter ketiga.