oracle,向嵌套 table 添加新行
oracle, adding a new line to a nested table
我有这三个对象
create or replace
type type_client
( num int ,
username varchar(30),
balance int,
ta table_achat,
ref_admin ref type_admin,
member function get_prix_achat_total return int );
create or replace
type table_achat as table of achat ;
create or replace
type achat as object ( num_item int , qte int
);
create table table_client OF type_client ;
假设在 table_client 的条目中......我们有一个像这样的嵌套 table:
(num_item,qte) : (1 , 5),(2 , 3)
我想要的是嵌套的table是这样的(例如):
(num_item,qte) : (1 , 5),(2 , 3)(3 , 44)
我的意思是,如何在保留现有条目的同时向已创建的嵌套 table 添加新行? ..
我们可以使用 MULTISET UNION 运算符从两个集合中创建一个新集合。在你的情况下,其中一组是你现有的集合,第二组是新条目的集合。
这是一个基于您设置的简化版本的演示:
declare
nt table_achat;
begin
nt := table_achat(achat(1 , 5),achat(2 , 3));
dbms_output.put_line(nt.count());
nt := nt multiset union table_achat(achat(3 , 44));
dbms_output.put_line(nt.count());
end;
/
给定一个带有 COL_NT 列的 table T42,它是您的 table_achat
类型的嵌套 table,您可以在嵌套 [=21] 中插入一个新条目=] 像这样:
insert into the
(select col_nt from t42 where id = 1)
values (achat(3,44));
与问题无关,我不能也没有尝试理解,你不能像以前那样组合 insert
+ select
+ values
语句。也许您可能更喜欢以下这些:
insert into the -- if table has one string column
(select ta from table_client where username=user);
OR
insert into the -- if table has two numeric columns
values (3,44);
我有这三个对象
create or replace
type type_client
( num int ,
username varchar(30),
balance int,
ta table_achat,
ref_admin ref type_admin,
member function get_prix_achat_total return int );
create or replace
type table_achat as table of achat ;
create or replace
type achat as object ( num_item int , qte int
);
create table table_client OF type_client ;
假设在 table_client 的条目中......我们有一个像这样的嵌套 table:
(num_item,qte) : (1 , 5),(2 , 3)
我想要的是嵌套的table是这样的(例如):
(num_item,qte) : (1 , 5),(2 , 3)(3 , 44)
我的意思是,如何在保留现有条目的同时向已创建的嵌套 table 添加新行? ..
我们可以使用 MULTISET UNION 运算符从两个集合中创建一个新集合。在你的情况下,其中一组是你现有的集合,第二组是新条目的集合。
这是一个基于您设置的简化版本的演示:
declare
nt table_achat;
begin
nt := table_achat(achat(1 , 5),achat(2 , 3));
dbms_output.put_line(nt.count());
nt := nt multiset union table_achat(achat(3 , 44));
dbms_output.put_line(nt.count());
end;
/
给定一个带有 COL_NT 列的 table T42,它是您的 table_achat
类型的嵌套 table,您可以在嵌套 [=21] 中插入一个新条目=] 像这样:
insert into the
(select col_nt from t42 where id = 1)
values (achat(3,44));
与问题无关,我不能也没有尝试理解,你不能像以前那样组合 insert
+ select
+ values
语句。也许您可能更喜欢以下这些:
insert into the -- if table has one string column
(select ta from table_client where username=user);
OR
insert into the -- if table has two numeric columns
values (3,44);