В нашей базе данных Oracle 11g у меня есть пользовательский тип данных:
num_list
create or replace type
num_list
as
table of varchar2(25);
Затем я создал таблицу, которая использует этот тип данных:
create table num_list_table(
id number(*,0)
,numbers num_list
) nested table numbers store as numbers_tab
;
Затем я вставил следующие строки:
insert into num_list_table values (1, num_list('123', 456'));
И теперь у меня есть 1 ряд. Я пытаюсь выяснить, как вставить больше значений в num_list строки 1 при сохранении любых существующих значений и без необходимости вручную вводить эти существующие значения; это небольшой пример гораздо более крупной задачи, которая потребует массовых обновлений при сохранении значений).
Я близко с этим:
update
num_list_table
set numbers = (select num_list(numbers) from (
select listagg(numbers, ',') within group (order by numbers) numbers
from (select t.column_value numbers
from
num_list_table nlt,
table(nlt.numbers) t
where
st.id = 1
union
select '789'
from dual)))
where id = 1;
Однако эти результаты представляют собой одну запись:
num_list('123,456,789')
Мне нужно, чтобы в num_list было несколько записей:
num_list('123', '456', '789')
Любая и всякая проницательность будет с благодарностью.