我应该如何使用 jdbc 从 plsql 将 varray 发送到 java? [复制]

Posted

技术标签:

【中文标题】我应该如何使用 jdbc 从 plsql 将 varray 发送到 java? [复制]【英文标题】:How should I send a varray from plsql to java using jdbc? [duplicate] 【发布时间】:2019-05-05 20:26:26 【问题描述】:

我有一个 PL/SQL 函数,它返回“TYPE varr IS VARRAY(100001) OF VARCHAR2(32000);”。使用函数的可调用语句,我想将此向量放入 Java 中的 String[] 中。我该怎么做?

我尝试了以下代码,但它给出了错误: “线程“主”java.sql.SQLException 中的异常:ORA-03115:不支持的网络数据类型或表示”。

    CallableStatement statement=Database.getConnection().prepareCall("? = call data_mining.return_treshold");
    statement.registerOutParameter(1, java.sql.Types.ARRAY);
    statement.executeQuery();
    Array arr=statement.getArray(1);
    String[] vec=(String[])arr.getArray();

【问题讨论】:

您是否查看了 ORA-03115 错误代码以了解详细信息? 是的,还是不知道怎么解决 【参考方案1】:

将调用中的类型名称添加到registerOutParameter

    statement.registerOutParameter(1, java.sql.Types.ARRAY, "VARR");

【讨论】:

这是我在指定“VARR”时得到的。线程“主”java.sql.SQLException 中的异常:无效的名称模式 请注意,必须使用CREATE OR REPLACE TYPE 语句定义类型VARR,而不仅仅是作为PL/SQL 函数、过程或包中的类型定义。 @BobJarvis 谢谢!!我没有在我的包外使用 CREATE OR REPLACE TYPE 定义 varr。现在它可以工作了。

以上是关于我应该如何使用 jdbc 从 plsql 将 varray 发送到 java? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 PLSQL 程序推送到 Java 应用程序

JDBC - 从 JAVA 调用 PLSQL 给出 Java.sql.SQLException: ORA-06550

我应该如何将NULL传递给va_list函数参数?

PLSQL JDBC:如何获取最后一行 ID?

PLSQL PHP:如何将大型 xml 数据从 PLSQL 函数获取到 PHP

Oracle Jdbc CallableStatement 失败,plsql 包含 CR ("\r")