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);