2017-12-30 46 views
-1

에 새 줄을 추가 내가오라클, 중첩 테이블

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의 항목에 가정이 세 가지 목적을 가지고 ... 우리는이 같은 중첩 테이블이 있습니다

(num_item,qte) : (1 , 5),(2 , 3) 

내가 원하는 경우 중첩 테이블은 다음과 같습니다 (예 :

).
(num_item,qte) : (1 , 5),(2 , 3)(3 , 44) 

내 말은 이미 생성 된 중첩 테이블 wh에 새 줄을 추가하는 것입니다. 기존 항목을 유지합니까? ..

+0

table_client의 정의를 표시 할 수 있습니까? –

+0

@ user9152856 : 대문자로 전체 문장 (특히 무언가를 묻는 질문)을 게시해서는 안됩니다. 이것은 일반적으로 인터넷에서 소리 (또는 고함)를 표현하는 데 사용되며, 의도가 무엇이든 상관없이 사람들을 귀찮게합니다. –

답변

2

MULTISET UNION 연산자를 사용하여 두 세트에서 새 세트를 만들 수 있습니다. 귀하의 경우 이러한 집합 중 하나는 기존 집합이며 두 번째 집합은 새로운 항목 집합입니다. 여기

은 셋업의 단순화 된 버전을 기반으로 데모입니다 : 당신이를 삽입 할 수 귀하의 table_achat 유형의 중첩 테이블은 열 COL_NT와 테이블 T42을 감안할 때

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

이 같은 중첩 된 테이블에 새 항목 : 내가 이해하려고하지 않았다 없습니다 질문에서

insert into the 
(select col_nt from t42 where id = 1) 
values (achat(3,44)); 
+0

예, 매우 유용합니다! table_client의 항목에있는 중첩 테이블에서이 작업을 수행하려고합니다. – user9152856

0

는 무관 한, 당신은 결합 할 수 없습니다 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); 
+0

아니요, 올바르지 않습니다! 내가 편집 작업을 제대로하기 전에 올바르게 말하십시오! – user9152856