我使用下面的JDBC代码来调用一个带有Array输入的Oracle存储过程.
但是以下三个类已被弃用.如何更换?
import oracle.sql.ArrayDescriptor;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;
Run Code Online (Sandbox Code Playgroud)
Java代码
Object[] reportArray = new Object[3];
STRUCT[] struct = new STRUCT[reports.size()];
ArrayDescriptor arrayDescriptor = new ArrayDescriptor(new SQLName("T_REPORT_TABLE", (OracleConnection) connection), connection);
StructDescriptor structDescriptor = StructDescriptor.createDescriptor("R_REPORT_OBJECT", connection);
int arrayIndex = 0;
for (Report data : reports) {
reportArray[0] = data.getXXX();
reportArray[1] = data.getYYY();
reportArray[2] = data.getZZZ();
struct[arrayIndex++] = new STRUCT(structDescriptor, connection, reportArray);
}
oracle.sql.ARRAY reportsArray = new oracle.sql.ARRAY(arrayDescriptor, connection, struct);
callableStatement.setArray("T_REPORT_IN", reportsArray);
callableStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud) 这个问题与我的原始问题有关如何将数组从Java返回到PL/SQL?,但更具体.
我一直在阅读Oracle数据库JDBC开发人员指南和
但我仍然无法编写最小代码,我可以使用它来创建ARRAY
ARRAY array = oracle.jdbc.OracleConnection.createARRAY(sql_type_name, elements);
Run Code Online (Sandbox Code Playgroud)
按照创建ARRAY对象中的说明进行操作.
我正在使用Oracle数据库JVM.
我试过以下:
例1
create or replace type widgets_t is table of varchar2(32767);
/
create or replace and compile java source named "so20j1" as
public class so20j1 {
public void f1() {
String[] elements = new String[]{"foo", "bar", "zoo"};
oracle.sql.ARRAY widgets =
oracle.jdbc.OracleConnection.createARRAY("widgets_t", elements);
}
};
/
show errors java source "so20j1"
Run Code Online (Sandbox Code Playgroud)
失败:
Errors for JAVA SOURCE "so20j1":
LINE/COL ERROR
-------- ----------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud)