我应该如何使用 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
JDBC - 从 JAVA 调用 PLSQL 给出 Java.sql.SQLException: ORA-06550