THE

[45 min]

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

Rétro-concevez le modèle RO permettant les instructions précédentes.

Produisez la syntaxe MLD et SQL.

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é.

UML Intervenant

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.

AccueilCours > Compléments > Exercice : THE< PrécédentSuivant >