2010-06-11 2 views

Répondre

2

La manière traditionnelle, relationnelle de faire cela serait avec une table de tas d'enfants:

create table emails 
    (id number 
    , email_address varchar2(254) 
    , constraint em_t23_fk foreign key (id) 
        references t23 (id) 
       ) 
/

Cependant, vous faites allusion à une table imbriquée:

create type email_t as object 
    (email_address varchar2(254)) 
/

create type email_nt as table of email_t 
/
alter table t23 
    add emails email_nt 
    nested table emails store as emails_table 
/

Voilà comment cela fonctionne:

SQL> update t23 
    2 set emails = email_nt (email_t('s[email protected]') 
    3       , email_t('[email protected]')) 
    4 where id = 222 
    5/

1 row updated. 

SQL> select * from t23 
    2 where id = 222 
    3/

     ID NAME       DOB 
---------- ------------------------------ --------- 
EMAILS(EMAIL_ADDRESS) 
---------------------------------------------------------------------------------- 
     222 Sam-I-Am      06-AUG-02 
EMAIL_NT(EMAIL_T('[email protected]'), EMAIL_T('[email protected]')) 


SQL> 

Modifier

La solution avec VARRAY est fondamentalement la même:

SQL> alter table t23 
    2  drop column emails 
    3/

Table altered. 

SQL> create type email_va as varray(5) of varchar2(254) 
    2/

Type created. 

SQL> alter table t23 
    2  add emails email_va 
    3/

Table altered. 

SQL> update t23 
    2 set emails = email_va ('[email protected]' 
    3      , '[email protected]') 
    4 where id = 222 
    5/

1 row updated. 

SQL> select t23.name 
    2   , e.* 
    3 from t23 
    4  , table (t23.emails) e 
    5 where t23.id = 222 
    6/

NAME       COLUMN_VALUE 
------------------------------ --------------------------------- 
Sam-I-Am      [email protected] 
Sam-I-Am      [email protected] 

SQL> 
+0

Merci u. nw j'ai eu .. le concept. –

+0

hey puis-je utiliser varray pour enregistrer plusieurs enregistrements dans une colonne ?? –

2

La méthode standard consiste à définir une deuxième table dans laquelle vous pouvez stocker un e-mail par ligne. Oracle prend également en charge nested tables afin qu'une seule colonne d'attributs puisse contenir plusieurs valeurs.

Questions connexes