Na to jsem konečně (s malou pomocí ostatních) našel odpověď. Sešlo se to ve třech částech:
První bylo, že jsem potřeboval použít:
OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
spíše než jednoduchý JDBC CallableStatement, který jsem se snažil použít.
Druhá část byla, že jsem musel zaregistrovat svůj parametr „out“ následovně:
stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
Třetí částí, a to je implicitně uvedeno v části 2 výše, bylo, že "DATA_SUMMARY_TAB" musí být VELKÝMI PÍSMENY. Pokud jej zadáte malými písmeny, zobrazí se následující záhadná chybová zpráva:
java.sql.SQLException: invalid name pattern: MYTEST.data_summary_tab
at oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:553)at oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:469)at oracle.sql.Structerjavick3Descript. oracle.sql.StructDescriptor.(StructDescriptor.java:320)
To je ono.
Všimněte si také, že náš vlastní typ objektu nebyl v žádném balíčku. Pokud ano, možná budete muset trochu hacknout třetí parametr.