Vous êtes sur la page 1sur 3

Approfondissement bases de donnes

NFA011

TP PL/SQL
Avion : Numav 14 345 Capacite 25 75 Nom Figue Lavande Nomab Nifance Tarice Heure_depart 08:30 09:21 12:56 08:00 14:20 22:00 15:45 21:12 07:57 07:39 23:57 15:35 15:52 21:26 20:50 07:20 07:53 07:58 07:15 22:10 10:12

Tables de la base : Type A400 B200 Ville Cannes Touquet Age 45 24 Entrepot Garches Maubeuge Salaire 28004 11758

Pilote : Matricule 1 2

Passager : Numab 1 8 Vol : Numvol AF118 AF212 AF178 TA215 OA005 SA854 AA111 AF218 SA012 AF109 AA517 JA014 AF002 JA115 AA015 AA515 AF010 AF012 AA118 AF001 PA022

Depart : Numvol AF118 AF212

Heure_arrivee 10:57 14:10 14:15 10:10 17:00 10:14 21:10 09:16 11:26 14:10 07:12 19:00 00:12 10:10 07:00 12:38 14:19 20:10 13:10 12:00 23:55

Ville_depart Paris Paris Paris Tunis Athens Singapore Beijing Beijing Sydney Tahiti Honolulu Tokyo Tokyo Los Angeles New York New York Paris Paris New York Paris Lima

Ville_arrivee Athens Moscow London Paris Paris Athens Singapore Paris Singapore Sydney Tokyo Beijing Paris Tokyo Lima Los Angeles New York Los Angeles Paris Tahiti Paris Matricule 1 2

Reservation : Numab 1 8 2006-2007

Date_dep 31-12-95 19-12-95 Numvol AF118 AF118 1

Numav 14 345 Date_dep 31-12-95 31-12-95

TP

Approfondissement bases de donnes Escales : Numescale 1 2 3 4 5 6 7 8 Ville_escale Moscou Singapour Sydney Tahiti Honolulu Los Angeles New York Londres Duree_escale 5 5 4 4 4 5 4 3

NFA011

Crez une table VotreNom.Vol en utilisant

1. Gnralits SQL

CREATE TABLE Vol (Numvol VARCHAR2(8), Heure_depart DATE, Heure_arrive DATE, Ville_depart VARCHAR2(20), Ville_arrivee VARCHAR2(20)) Ecrivez les instructions qui copient la table Vol dans la table VotreNom.Vol (les 2 tables ont la

mme structure).

Remarque : la fonction TO_DATE convertit des chanes de caractres en dates, suivant le format (voir la documentation en ligne). A partir de maintenant, pour viter que dventuelles erreurs ne se rpercutent sur lensemble du groupe, vous vous servirez exclusivement de vos tables. Insrez une nouvelle ligne (valeurs de votre choix) dans la table VotreNom.Vol en utilisant :

COMMIT; BEGIN INSERT INTO VotreNom.Vol (valeurs de votre choix, attention aux types); END /

Refaites linsertion et quittez ensuite SQL*Plus avec exit. Reconnectez-vous et vrifiez si lenregistrement que vous avez insr est prsent dans la table. Expliquez les rsultats obtenus par lexcution du programme PL/SQL suivant :

Quittez SQL*Plus en fermant brutalement la fentre. Reconnectez-vous et vrifiez si lenregistrement que vous avez insr est prsent dans la table.

2. Fonctions et procdures

DECLARE n NUMBER := 10; PROCEDURE etudeNocopy (n1 IN NUMBER, n2 IN OUT NUMBER, n3 IN OUT NOCOPY NUMBER) IS BEGIN n2 := 20; DBMS_OUTPUT.PUT_LINE(n1); n3 := 30; DBMS_OUTPUT.PUT_LINE(n1); END etudeNocopy; BEGIN etudeNocopy(n, n, n);

2006-2007

TP

Approfondissement bases de donnes


END; DBMS_OUTPUT.PUT_LINE(n);

NFA011

Reprendre les exercices 3 et 4 des ED PL/SQL (voir ci-dessous) et les crire sous forme de procdures stockes avec comme paramtre la ville de dpart.

3. Paquetages

1. Surcharger la procdure de l'exercice 4 en lui ajoutant les deux bornes suprieure et infrieure limitant le nombre d'escales. 2 Regrouper toutes les fonctions dans le mme paquetage. Exercice 3 (ED PL/SQL) : Ecrivez un programme PL/SQL qui calcule la moyenne des salaires des pilotes dont lge est entre 30 et 40 ans.

Exercice 4 (ED PL/SQL) : Ecrivez un programme PL/SQL qui propose les vols pour un tour du monde au dpart de Paris avec des escales et des dures descale prdfinies dans la table Escales. Le nombre descales faire doit tre demand lutilisateur. Hypothse de travail : pour chaque escale il existe plusieurs vols satisfaisant les contraintes. Ecrivez un dclencheur qui, avant un INSERT dans la table Vol, vrifie si un vol retour est prsent dans la table (pour que la destination soit desservie dans les 2 sens) et, sinon, affiche un avertissement la console. Essayez de dclarer le dclencheur AFTER au lieu de BEFORE. Que se passe-t-il ? Pourquoi ?

4. Dclencheurs

Ecrivez un dclencheur qui, avant chaque insertion ou mise jour du numro de vol ou du numro davion dans la table Depart, vrifie si lavion employ a une capacit au moins gale au nombre de rservations et a comme entrept la ville de dpart. Si les deux conditions sont satisfaites la modification est faite. Si la capacit est insuffisante et/ou lentrept nest pas la ville de dpart, des messages spcifiques sont affichs.

2006-2007

TP