gpt4 book ai didi

java - 使用 JDBC 在 Java 中检索 2d varray

转载 作者:行者123 更新时间:2023-11-29 03:56:24 26 4
gpt4 key购买 nike

我有以下类型:

create or replace TYPE mytimestamp AS VARRAY(300) OF TIMESTAMP(6);
create or replace TYPE trade_history_dts_array AS VARRAY(300) OF mytimestamp;

存储过程中的类型是这样使用的:

trade_history_dts tradehistorydtsarray ;

FOR i IN 1..20
loop
trade_history_dts(i) := mytimestamp();
LOOP
trade_history_dts(i).extend();
FETCH trade_history_cursor INTO
trade_history_dts(i)(j),
dbms_output.put_line(trade_history_dts(i)(j));

j := j+1;
exit when trade_history_cursor%notfound;
END LOOP;
j:=1;
end loop;

存储过程已经过测试,我可以得到正确的结果:

贸易信息 1

trade_history_dts(1)(1)17-OCT-05 03.49.57.000000 PM
trade_history_dts(1)(2)17-OCT-05 03.49.58.000000 PM

贸易信息 2

trade_history_dts(2)(1)27-JUN-05 09.02.59.000000 AM
trade_history_dts(2)(2)27-JUN-05 09.02.59.000000 AM
trade_history_dts(2)(3)27-JUN-05 09.03.01.000000 AM

贸易信息 3

trade_history_dts(3)(1)09-FEB-06 09.31.03.000000 AM
trade_history_dts(3)(2)09-FEB-06 09.31.05.000000 AM

....

现在我想在java中得到这个结果,并将它转换成一个二维数组。

我尝试了以下方法:

Timestamp[][] trade_history_dts = (Timestamp[][])trade_history_dts_arr.getArray();

但它不起作用。有谁知道如何将它转换为 java 中的二维数组?谢谢!

最佳答案

您采用的方法行不通,因为 JDBC 本身不支持 Oracle 的集合类型。您需要处理 Oracle JDBC 驱动程序中包含的类型的对象,以便以您希望的方式访问结果集的内容。这将涉及将 ResultSet 对象转换为 OracleResultSet,以便可以通过 oracle.sql.ARRAY 的实例访问集合的内部元素元素。

您还可以使用 getObject 方法从 ResultSet 中读取对象,然后将其转换为表示集合的 oracle.sql.ARRAY 实例。有关此机制的详细信息,请参阅 Oracle Database JDBC Developer's Guide and Reference .

此外,您需要解析结果集中的每个元素,并以类似的方式处理它们,因为您返回的是一个多级集合。 the same guide in a separate section 中提供了这方面的详细信息.

关于java - 使用 JDBC 在 Java 中检索 2d varray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6195863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com