Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Динамически извлечь данные из определенного в массиве набора столбцов.  [new]
sef
Member

Откуда:
Сообщений: 52
Здравствуйте.

не могу наити решение. у меня есть массив L_COLUMN_ARRAY, который содержит названия полей таблицы M_TEST.
Задача состоит в том, чтобы, при выборке одной записи из таблицы M_TEST, сохранить значения полей в массиве L_VALUE_ARRAY согласно списку этих самых полей L_COLUMN_ARRAY. ниже привожу схематичный пример своей проблемы:

create table m_test (
    id number,
    name varchar(128)
);
insert into m_test(1,'111 111');
commit;

declare
    type COLUMN_ARRAY is table of VARCHAR2(30);
    l_column_array COLUMN_ARRAY := COLUMN_ARRAY('ID','NAME');

    type VALUE_ARRAY is table of VARCHAR2(128);
    l_value_array VALUE_ARRAY := VALUE_ARRAY;

    Type rec is record (
        ID number, 
        NAME varchar2(128)
    );
    l_rec rec;
begin
    select * into l_rec from m_test where id=1;
    for i in 1 .. l_column_array.count loop
        l_value_array.extend;
        -- как-то вот так мне надо
        l_value_array(i) := l_rec.get(l_column_array(i));
    end loop;
end;
5 июн 09, 10:47    [7268588]     Ответить | Цитировать Сообщить модератору
 Re: Динамически извлечь данные из определенного в массиве набора столбцов.  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
пишите явно и не мучайтесь.
5 июн 09, 11:16    [7268770]     Ответить | Цитировать Сообщить модератору
 Re: Динамически извлечь данные из определенного в массиве набора столбцов.  [new]
sef
Member

Откуда:
Сообщений: 52
Jannny,

не пойдет, к сожалению. дело в том, что набор полей массива L_COLUMN_ARRAY строится тоже из соответствующей таблицы (назову ее ST_COLUMN) и, соответственно, может динамически меняться. поэтому и не хотелось бы мне каждый раз перекомпилировать пакет изза DML-операции над ST_COLUMN. неужели нет решения, даже некрасивого? я могу, конечно java-процедуру написать, но хотелось бы сначало plsql кодом попробовать.
5 июн 09, 11:39    [7268975]     Ответить | Цитировать Сообщить модератору
 Re: Динамически извлечь данные из определенного в массиве набора столбцов.  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
само собой можно - утащить все в динамику. Но сами подумайте - из-за того, что Вам при добавлении полей в таблице (сомневаюсь, что это такая частая процедура) лень поменять код, Ораклу придется каждый раз при обращении к этому коду работать менее оптимально, чем со статическим вариантом. Вы уверены, что это стоит того?
5 июн 09, 11:42    [7268997]     Ответить | Цитировать Сообщить модератору
 Re: Динамически извлечь данные из определенного в массиве набора столбцов.  [new]
sef
Member

Откуда:
Сообщений: 52
Jannny,

да. я отдаю себе отчет в этом. но у меня нет другого выбора, поверьте.
5 июн 09, 11:53    [7269079]     Ответить | Цитировать Сообщить модератору
 Re: Динамически извлечь данные из определенного в массиве набора столбцов.  [new]
Elic
Member

Откуда:
Сообщений: 29979
RTFM Why Use Dynamic SQL? (FAQ)
5 июн 09, 13:01    [7269485]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить