我终于(在别人的帮助下)找到了答案。它分为三个部分:
首先是我需要使用:
OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
而不是我一直尝试使用的简单JDBC CallableStatement。
第二部分是我必须按如下方式注册“ out”参数:
stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
第三部分(在上面的第二部分中是隐含的)是“ 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)
而已。
另外,请注意,我们的自定义对象类型不在任何程序包中。如果是这样,您可能需要修改一下第三个参数。



