/* select * from table (select x3.enfant_nt from personne x3 where x3.codepers = '5'); break on nompers on prenompers - on sexepers on datenaissance select x1.nompers, x1.prenompers, x1.sexepers, x1.datenaissance, x3.* from personne x1, table(select enfant_nt from personne where codepers='5') x3 where x1.codepers='5'; */ -- petit commentaire /* plus long commentaire */ /* break sert à ne pas répéter les noms des parents pour chaque enfant Pour relancer la dernière commande tapée, il faut faire "/" */ /* clear break; / col nompers for a15 col prenompers for a15 col sexepers for a10 break on nompers on prenompers - on sexepers on datenaissance select x1.nompers, x1.prenompers, x1.sexepers, x1.datenaissance, x3.* from personne x1,table(x1.enfant_nt) x3; col nompers for a15 col prenompers for a15 col sexepers for a10 break on nompers on prenompers - on sexepers on datenaissance select x1.nompers, x1.prenompers, x1.sexepers, x1.datenaissance, x3.* from personne x1,table(x1.enfant_nt) (+) x3; select value(x1) from personne x1; select ref(x1) from personne x1; select x1.nompers, x1.prenompers, x1.datenaissance, cursor(select * from table(x1.enfant_nt)) from personne x1 order by x1.nompers desc; */ /* Modification des données enfants (nested table) on ne peut pas modifier plusieurs collections nested table dans la même instruction "update" */ /* -- modification d'une colonne ou plusieurs update table(select enfant_nt from personne where codepers=5) x1 set x1.prenomenf='victor' where x1.prenomenf = 'arthur'; --modification de toutes les colonnes de --"enfant_nt" avec la directive VALUE update table(select enfant_nt from personne where codepers=5) x1 set value(x1)=enfant_elt_nt_type('victor','25','ingenieur') where x1.prenomenf = 'arthur'; */ /* declare tableautel telephone_vry_type; begin select telephone_vry into tableautel from personne where codepers = 4 for update of telephone_vry; tableautel(1).numtel := '01 42 79 82 05'; tableautel(2).numtel := '06 62 65 96 72'; update personne set telephone_vry = tableautel where codepers = 4; end; / select count(*) from table (select telephone_vry from personne where codepers = 4); insert into visa(codevisa,datedemande,dateentree,datesortie,numeropasseport,motifsejour,ref_personne) values('1','29/10/2004','12/12/2004','12/01/2005','00 XP 00000','tourisme', (select ref(x1) from personne x1 where x1.codepers='2') ); insert into visa(codevisa,datedemande,dateentree,datesortie,numeropasseport,motifsejour,ref_personne) values('2','29/03/2005','12/04/2005','12/05/2005','00 XP 00000','tourisme', (select ref(x1) from personne x1 where x1.codepers='2') ); insert into visa(codevisa,datedemande,dateentree,datesortie,numeropasseport,motifsejour,ref_personne) values('3','29/10/2004','12/12/2004','12/01/2005','00 XP 00000','tourisme', (select ref(x1) from personne x1 where x1.codepers='3') ); insert into visa(codevisa,datedemande,dateentree,datesortie,numeropasseport,motifsejour,ref_personne) values('4','29/03/2005','12/04/2005','12/05/2005','00 XP 00000','tourisme', (select ref(x1) from personne x1 where x1.codepers='3') ); select x1.ref_personne.nompers, x1.ref_personne.prenompers, x1.ref_personne.sexepers, x1.ref_personne.datenaissance, x1.datedemande, x1.dateentree, x1.datesortie, x1.numeropasseport, x1.motifsejour from visa x1; update visa x1 set x1.ref_pays = (select ref(x2) from pays x2 where x2.codepays='jp') where x1.ref_personne = (select ref(x3) from personne x3 where x3.codepers='3'); update visa x1 set x1.ref_pays = (select ref(x2) from pays x2 where x2.codepays='cn') where x1.codevisa='1'; update visa x1 set x1.ref_pays = (select ref(x2) from pays x2 where x2.codepays='vn') where x1.codevisa='2'; begin personne_type.insererpersonne('fonda','henry',adresse_type('1','place de paris 7','paris',NULL)); end; / --commit pour tout enregistrer commit; declare nompersonne varchar2(20) := 'gosselin'; prenompersonne varchar2(20) := 'michel'; begin personne_type.insererpersonne(nompersonne,prenompersonne); end; / declare personneamodifier personne_type; datenaissance personne.datenaissance%TYPE := to_date('25/12/1975','DD/MM/YYYY'); begin select value(x1) into personneamodifier from personne x1 where x1.codepers = 1; personneamodifier.majdatenaissance (datenaissance); end; / -- autre façon d'ajouter une personne et d'afficher son age declare nouvellepersonne personne_type; age number; identifiant number; begin select seqcodepers.nextval into identifiant from dual; nouvellepersonne := new personne_type (identifiant,'paul','michelle','F','17/12/1965', adresse_type('1','place des ternes','paris',NULL), telephone_vry_type( telephone_elt_vry_type('01.46.00.22.31'), telephone_elt_vry_type('06.46.55.33.22')), enfant_nt_type( enfant_elt_nt_type(NULL,NULL,NULL)) ); age:= nouvellepersonne.getage(); insert into personne values(nouvellepersonne); end; / select x1.nompers,x1.prenompers, to_char(x1.datenaissance,'DD/MM/YYYY') "né(e) le",x1.getage() age from personne x1; */