在我们的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行。我试图弄清楚如何在保留所有现有值的同时将更多值插入第1行的num_list中,而不必手动键入这些现有值;这是一个更大的任务的小例子,该任务需要大量更新同时保留vals。
我与此很亲近:
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')
任何人和所有见识将不胜感激。
答案 0 :(得分:0)
您可以将单个值插入嵌套表中的特定ID,如下所示:
insert into table
(select numbers
from num_list_table
where id = 1)
values ('123')
或使用插入选择:
insert into table
(select numbers
from num_list_table
where id = 1)
select n.same_type_field
from another_table n;