Vous êtes sur la page 1sur 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.
B. Quelques requêtes de prises en main de la base
B1) Lister les vols ayant un pilote qui habite la vile de départ du vol. Editer le
numéro le
numéro de vol, la ville de départ, la ville d’arrivée et le nom du pilote.
B2) Lister les moyennes des heures de vol par type d’avion pour les avions qui ont
un
nombre d’heures moyen supérieur à la moyenne du nombre d’heures tout type
confondu.
B3) Donner la liste des pilotes qui n’ont jamais été affectés à un vol. Afficher le
numéro de
pilote.
B4) Donner la liste des vols qui correspondent à des aller-retours entre deux
villes.
Afficher le numéro de vol, la ville de départ et la ville d’arrivée.
B5) Lister les vols ayant un pilote qui habite la ville de départ du vol. Editer le
numéro de
vol, la ville de départ, la ville d’arrivée et le nom du pilote.
B6) Créer la table (totavion) qui comptabilise par avion le nombre de personnes
transportées et le nombre de vols effectués. Les colonnes sont : numéro d’avion,
nombre de passagers et le nombre de vols.
C. Compréhension des blocs PL/SQL
C1) Écrire un bloc PL/SQL permettant d’afficher 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. Utiliser la notion ‘%ROWTYPE’.
C2) Écrire un bloc PL/SQL permettant d’afficher les noms et les adresses des
pilotes dont
le salaire dépasse 25000 (Variable de substitution).
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

Vous aimerez peut-être aussi