मुझे आखिरकार (दूसरों की थोड़ी मदद से) इसका जवाब मिल गया। यह तीन भागों में आया:
पहला यह था कि मुझे एक का उपयोग करने की आवश्यकता थी:
OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
साधारण JDBC CallableStatement के बजाय मैं उपयोग करने का प्रयास कर रहा था।
दूसरा भाग यह था कि मुझे अपना "आउट" पैरामीटर निम्नानुसार पंजीकृत करना था:
stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
तीसरा भाग, और यह ऊपर के भाग 2 में निहित है, यह था कि "DATA_SUMMARY_TAB" को UPPER CASE में होना था। यदि आप इसे लोअरकेस में रखते हैं, तो आपको एक गुप्त त्रुटि संदेश इस प्रकार मिलता है:
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.javatDescriptor.java:390) पर oracle.sql.StructDescriptor.(StructDescriptor.java:320)
बस इतना ही।
साथ ही, कृपया ध्यान दें कि हमारा कस्टम ऑब्जेक्ट प्रकार किसी भी पैकेज में नहीं था। यदि ऐसा है, तो आपको तीसरे पैरामीटर को थोड़ा सा हैक करने की आवश्यकता हो सकती है।