Получение 2d varray в Java с помощью JDBC - PullRequest
1 голос
/ 01 июня 2011

У меня есть следующие типы:

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 и преобразовать его в 2-мерный массив.

Я пробовал следующее:

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

, но он не работает.Кто-нибудь знает, как преобразовать его в 2-мерный массив в Java?Спасибо!

1 Ответ

4 голосов
/ 01 июня 2011

Принятый вами подход не сработает, потому что сам по себе JDBC не поддерживает типы коллекций Oracle.Вам нужно будет работать с объектами типа, содержащимися в драйвере Oracle JDBC, для доступа к содержимому набора результатов нужным вам способом.Это может включать преобразование объекта ResultSet в OracleResultSet, чтобы к внутренним элементам коллекции можно было обращаться через экземпляры oracle.sql.ARRAY элементов.

Вы также можете прочитать объект из ResultSet, используяgetObject, а затем приведите его к экземпляру oracle.sql.ARRAY, который представляет коллекцию.Подробную информацию об этом механизме можно найти в Руководстве разработчика и справочнике по Oracle Database JDBC .

Кроме того, вам необходимо проанализировать каждый элемент в наборе результатов и обработать их вАналогичным образом, вы возвращаете многоуровневую коллекцию.Подробная информация об этом приведена в того же руководства в отдельном разделе .

...