Академический Документы
Профессиональный Документы
Культура Документы
Cette base de données conçue pour la gestion (très simplifiée) du transport aérien, sert de
support aux exercices du TP1, TP2 et TP3
codetype code normalisé désignant une Nbhvol nombre heures de vol depuis la mise
famille d’avions en service
1
l’avion pour le vol
Nom colonne Type - contrainte
avion numéro d’immatriculation de
l’avion affecté au vol codetype CHAR(3) clé primaire
design VARCHAR2(50)
LES TABLES
Table vol
Table avion
Tableau A.6 – Structure table VOL
Tableau A.9 – Structure table AVION
embauche DATE
Table appareil
Tableau A.8 – Structure table APPAREIL
2
A. Création des tables
A1) Créer, sous l’éditeur WORKSHEET, les tables correspondant au modèle relationnel de
la figure A.1.
A2) Créer, toujours sous l’éditeur WORKSHEET, des données (des tuples) pour ces tables.
3
C3) Écrire un bloc PL/SQL permettant d’afficher toutes les informations concernant les
avions dont le nombre des heures de vol dépassent de plus que 25 la moyenne des
nbhvol de toutes les avions de la base.
C4) Écrire un bloc PL/SQL permettant d’afficher les noms des pilotes dont les salaires
dépassent 25000 et que la commission est inférieure à 20% du salaire. Afficher les
noms des pilotes et leurs dates d’embauche.
On désire afficher les mêmes informations en considérant le salaire et la commission
comme des paramètres (Curseur paramétré).
C5) Écrire un block PL/SQL permettant :
1. De récupérer la liste des pilotes qui ont été affectés un seul vol.
2. D’Insérer cette liste dans une table T1 dont le contenu est de type scalaire faisant
référence à la table pilote.nopilot.
3. D’insérer la commission de chaque pilote de la liste dans une deuxième table T2 dont
le contenu est de type scalaire faisant référence à la table pilote.comm.
4. De réduire la commission de chaque pilote de la liste de 5% et insérer le résultat de
chaque réduction dans une troisième table T3.
5. D’afficher le contenu des 3 tables T1, T2 et T3.
C6) Compléter le script suivant de façon à ajouter à chaque pilote sélectionné dans le
curseur C1 une commission de 500DH
DECLARE
CURSOR C1 IS SELECT nom, sal FROM pilote;
V_nom pilote.nom%type ;
V_sal pilote.sa%type;
BEGIN
. . .
END;
C7) PL/SQL offre la possibilité d’utiliser l’option CURRENT OF nom_curseur dans la
clause WHERE des instructions UPDATE et DELETE. Cette option permet de
modifier ou de supprimer la ligne distribuée par la commande FETCH. Pour utiliser
cette option il faut ajouter la clause FOR UPDATE à la fin de la définition du curseur.
Compléter le script suivant qui permet de modifiant le salaire d’un pilote avec les
contraintes suivantes :
- Si la commission est supérieure au salaire alors on rajoute au salaire la valeur de la
commission et la commission sera mise à la valeur nulle.
- Si la valeur de la commission est nulle alors supprimer le pilote du curseur.
DECLARE
CURSOR C_pilote IS
SELECT nom, sal, comm
FROM pilote
WHERE nopilot BETWEEN 1280 AND 1999 FOR UPDATE;
v_nom pilote.nom%type;
v_sal pilote.sal%type;
v_comm pilote.comm%type;
BEGIN
. . .
END;
C8) Écrire une procédure PL/SQL qui réalise l’accès à la table PILOTE par l’attribut
nopilote.Si le numéro de pilote existe, elle envoie dans la table ERREUR, le message
« NOM PILOTE-OK » sinon le message « PILOTE INCONNU ». De plus si
sal<comm, elle envoie dans la table ERREUR le message « « NOM PILOTE, COMM
>SAL ».
4
Indication : une erreur utilisateur doit être explicitement déclenchée dans la procédure
PL/SQL par l’ordre RAISE. La commande RAISE arrête l’exécution normale du bloc
et transfert le contrôle au traitement de l’exception.