Soit la séquence d'instructions suivante utilisant la clause THE :
INSERT INTO tIntervenant (pknom, prenom, bureau, ltelephones, lspecialites)
VALUES (
'Dumas',
'Leonard',
typBureau('R','C',123),
typListeTelephones(0344234423),
typListeSpecialites()
);
INSERT INTO THE (SELECT i.ltelephones FROM tIntervenant i WHERE i.pknom='Dumas')
VALUES (0666666666);
INSERT INTO THE (SELECT i.lspecialites FROM tIntervenant i WHERE i.pknom='Dumas')
VALUES (typSpecialite('BD','SGBDR'));
DELETE THE (SELECT i.ltelephones FROM tIntervenant i WHERE i.pknom='Dumas') nt
WHERE nt.COLUMN_VALUE=0344234423;
UPDATE THE (SELECT i.lspecialites FROM tIntervenant i WHERE i.pknom='Dumas') nt
SET nt.technologie='SGBDRO'
WHERE nt.domaine='BD';
Rappel : Extension THE
Type typBureau : <centre:char, batiment:char, numero:int>
Type typListeTelephones : collection de <entier>
Type typSpecialite : <domaine:char, specialite:char>
Type typListeSpecialites : collection de <typSpecialite>
tIntervenant (#nom:char, prenom:char, bureau:typBureau, ltelephones:typListeTelephones, lspecialites:typListeSpecialites)
CREATE OR REPLACE TYPE typBureau AS OBJECT (
centre char(2),
batiment char(1),
numero number(3)
);
/
CREATE OR REPLACE TYPE typListeTelephones AS TABLE OF number(10);
/
CREATE OR REPLACE TYPE typSpecialite AS OBJECT (
domaine varchar2(15),
technologie varchar2(15)
);
/
CREATE OR REPLACE TYPE typListeSpecialites AS TABLE OF typSpecialite;
/
CREATE TABLE tIntervenant (
pknom varchar2(20) PRIMARY KEY,
prenom varchar2(20) NOT NULL,
bureau typBureau,
ltelephones typListeTelephones,
lspecialites typListeSpecialites
)
NESTED TABLE ltelephones STORE AS tIntervenant_nt1,
NESTED TABLE lspecialites STORE AS tIntervenant_nt2;
Rétro-concevez le modèle UML associé.
Que renvoie l'instruction suivante :
SELECT i.pknom, s.*, t.*
FROM tIntervenant i, TABLE(i.lspecialites) s, TABLE(i.ltelephones) t
WHERE i.pknom='Dumas'
Vous dessinerez un tableau avec les entêtes de colonne adéquates.
PKNOM DOMAINE TECHNOLOGIE COLUMN_VALUE
-------------------- --------------- --------------- ------------
Dumas BD SGBDRO 666666666
Changer le numéro de téléphone de Dumas avec la valeur de votre choix.
UPDATE THE (SELECT i.ltelephones FROM tIntervenant i WHERE i.pknom='Dumas') nt
SET nt.COLUMN_VALUE=1111111111;
Le WHERE n'est pas strictement indispensable, étant donné que la base ne contient que Dumas
pour le moment ; mais logiquement il est nécessaire pour assurer un fonctionnement correct dans tous les cas.