微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用JDBC检索Java中的2d varray

如何解决使用JDBC检索Java中的2d varray

| 我有以下几种类型:
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驱动程序中包含的类型的对象,以便以所需的方式访问结果集的内容。这将涉及将“ 6”对象转换为“ 7”,以便可以通过“ 8”元素的实例访问集合的内部元素。 您还可以使用
getObject
方法从ResultSet中读取一个对象,然后将其转换为表示集合的
oracle.sql.ARRAY
实例。有关此机制的详细信息,请参见《 Oracle数据库JDBC开发人员指南》。 另外,您需要解析结果集中的每个元素,并以类似的方式处理它们,因为您要返回一个多级集合。有关详细信息,请参见同一指南的单独部分。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。