Как Oracle VARRAY представляет данные в терминах Java?

Немного широкий вопрос здесь, но здесь идет

Я пытаюсь вызвать хранимую процедуру Oracle, которая возвращает VARRAY, созданный из ROWTYPE на одной из моих таблиц. Для простоты предположим, что эта таблица выглядит следующим образом:

MY_TABLE
ID   VALUE
-----------
1    John
2    Dave

поэтому я вызову SP, который возвращает следующий тип VARRAY:

CREATE OR REPLACE TYPE param_array is VARRAY(100) OF MY_TABLE%ROWTYPE;

Согласно документации Oracle, вы можете извлечь это как массив, но у меня вопрос: каким будет тип массива, массив строк, имя / значение, парные строки и т. Д.?

Я создаю код Java, который будет извлекать данные из этого массива, но я не уверен, какой это будет формат, например 1, John ИЛИ ЖЕ 1=John или же 1,John

Есть идеи?

1 ответ

Решение

Из документов:

SQL>CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF VARCHAR2(30)
SQL>/

Затем создайте следующую функцию, которая возвращает VARRAY.

CREATE OR REPLACE FUNCTION getEmpArray RETURN EMPARRAY
AS
  l_data EmpArray := EmpArray();
  CURSOR c_emp IS SELECT ename FROM EMP;
  BEGIN
    FOR emp_rec IN c_emp LOOP
      l_data.extend;
      l_data(l_data.count) := emp_rec.ename;
    END LOOP;
    RETURN l_data;
  END;

Он вернет массив строк (VARCHAR) с максимальной длиной 30, он вернёт emparray, который объявлен как varray of varchars (strings)

Другие вопросы по тегам