【发布时间】:2011-12-14 06:59:16
【问题描述】:
这个问题与我原来的问题How to return an array from Java to PL/SQL ?有关,但更具体。
我一直在阅读Oracle Database JDBC Developer's Guide 和
- Creating ARRAY objects
- Server-Side Internal Driver
- oracle.jdbc.OracleConnection
- oracle.jdbc.OracleDriver
但我仍然无法编写可以使用
创建 ARRAY 的最少代码ARRAY array = oracle.jdbc.OracleConnection.createARRAY(sql_type_name, elements);
按照Creating ARRAY objects中的说明。
我正在使用 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"
失败:
Errors for JAVA SOURCE "so20j1":
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 so20j1:4: non-static method
createARRAY(java.lang.String,java.lang.Object) cannot be
referenced from a static context
0/0 1 error
0/0 ^
0/0 oracle.sql.ARRAY widgets =
oracle.jdbc.OracleConnection.createARRAY("widgets_t", elements);
示例 2
create or replace type widgets_t is table of varchar2(32767);
/
create or replace and compile java source named "so20j2" as
public class so20j2 {
public void f1() {
String[] elements = new String[]{"foo", "bar", "zoo"};
oracle.jdbc.OracleDriver ora = new oracle.jdbc.OracleDriver();
java.sql.Connection conn = ora.defaultConnection();
oracle.sql.ARRAY widgets = conn.createARRAY("widgets_t", elements);
}
};
/
show errors java source "so20j2"
失败:
Errors for JAVA SOURCE "so20j2":
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 so20j2:6: cannot find symbol
0/0 symbol : method createARRAY(java.lang.String,java.lang.String[])
0/0 1 error
0/0 oracle.sql.ARRAY widgets = conn.createARRAY("widgets_t",
elements);
0/0 ^
0/0 location: interface java.sql.Connection
免责声明:我还不是 Java 程序员。
【问题讨论】:
-
首先,您必须“将类型元素创建为 varray(22) OF NUMBER(5,2);”然后在 oracle.jdbc.OracleConnection.createARRAY() 中使用这个类型
-
@Zaki:如果您仔细阅读这个问题,我相信您会看到我正在做的事情。类型名称是
widgets_t。
标签: java oracle jdbc oracle11gr2