Най-накрая (с малко помощ от други) открих отговора на това. Предлага се в три части:
Първият беше, че трябваше да използвам:
OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
вместо простия JDBC CallableStatement, който се опитвах да използвам.
Втората част беше, че трябваше да регистрирам моя "out" параметър, както следва:
stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
Третата част, и тя се подразбира в част 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)
Това е.
Също така, имайте предвид, че нашият персонализиран тип обект не беше в нито един пакет. Ако е така, може да се наложи да хакнете малко третия параметър.