Vous êtes sur la page 1sur 3

Jrme FESSY

TP ORACLE PL/SQL Anne 1998

CORRECTION DU TP ORACLE Dclaration et Gestion de Variables sous PL/SQL


ATTENTION : pour tester les corrections, il vous faut passer sous les diteurs WORDPAD ou BLOC NOTES car les caractres quotes de WORD ne sont pas accepts par le compilateur PL/SQL. I) CREATION DE BLOCS BEGIN insert into pilote values (1, 'Serge Favret', 'Bordeaux', 40, 18000); insert into pilote values (2, 'Alain Dupond', 'Paris', 35, 144000); END; / II) DEGUGGAGE EN PL/SQL SET SERVEROUT ON; BEGIN END; / Remarque : DBMS_OUTPUT.put_line('TP Oracle7-PL/SQL'); --> permet dactiver les sortie ecran

lactivation de la sortie ecran est valable jusqu fermeture de la session SQL*PLUS Par defaut, la sortie ecran est desactive (SET SERVEROUT OFF)

III) DECLARATION de VARIABLES DECLARE date1 DATE :='29/12/96'; <-- les dates doivent toujours tre manipules entre quotes date2 DATE ; ville1 CHAR(10) :='Paris'; ville2 CHAR(20); Nbre_Heure CONSTANT INTEGER:=0; BEGIN ville2 := 'Londres'; INSERT INTO vol VALUES ('RT200', null, null, ville1,ville2); END; /

IV) les DATEs sous ORACLE 2) Modifier le bloc prcdent afin quil insre le vol de numro RT200 dcollant de Paris 20h30 le 12/01/98 et atterrissant Londres 21h30 le 12/01/98.
DECLARE date1 DATE :='29/12/96'; <-- les dates doivent toujours tre manipules entre quotes date2 DATE ; ville1 CHAR(10) :='Paris'; ville2 CHAR(20); Nbre_Heure CONSTANT INTEGER:=0; BEGIN ville2 := 'Londres';

Jrme FESSY

TP ORACLE PL/SQL Anne 1998

END; /

date1 :=TO_DATE('12-01-98 20:30', 'DD-MM-YY HH24:MI'); date2 := TO_DATE('12-01-98 21:30', 'DD-MM-YY HH24:MI'); INSERT INTO vol VALUES ('RT200', null, date2, ville1,ville2);

3) Visualiser la bonne ralisation de linsertion et faites en sorte dafficher correctement les heures de dparts et darrive au moyen de la fonction TO_CHAR.
/* Commandes SQL*PLUS de definition du format d'affichage des colonnes de la requete */ column column column column heure_dep format a17; heure_arr format a17; ville_depart format a15; ville_arrivee format a15;

/* Requete d'affichage utilisant la fonction to_char SELECT numvol, TO_CHAR(heure_depart, 'DD-MM-YY HH24:MI') heure_dep, TO_CHAR(heure_arrivee, 'DD-MM-YY HH24:MI') heure_arr, ville_depart, ville_arrivee

FROM vol;

4) Il vous est demand daffecter comme nouveau format de session, le format DD/MM/YYYY
HH24 :MI . Puis, insrer dans la base un vol partant le Paris le 31 dcembre 1999 10h et arrivant Papette le 1 janvier 2000 8h. Vrifiez que linsertion a eu lieu et faites afficher le sicle des vols de la base.
/* Autre solution pour afficher correctement les dates : La commande SQL ALTER SESSION permet de modifier les variables de la session SQL*PLUS en precisant le format par defaut des types DATE*/ ALTER SESSION SET nls_date_format = 'DD-MM-YYYY HH24:MI'; SELECT * FROM vol;

La session est modifie : toutes les colonnes ou variables de type DATE dans une requte SQL ou un programme PL/SQL seront affiches avec se nouveau format par dfaut. La sortie de loutil SQL*Plus marque la fin de la session. INSERT INTO VOL VALUES (RT201, 31/12/1999 10 :00, 01/01/2000 08 :00, Paris, Papette) ;

6) Petites manipulations : 6.1) Quel jour de la semaine tait le 26 mars 1999 ? SELECT TO_CHAR(TO_DATE(26,03,1999, DD/MM/YYYY), DAY) FROM DUAL ; 6.2) Afficher le sicle de la date du jour SELECT TO_CHAR(sysdate,CC) From Dual ; 6.3) Modifier la base en ajoutant 4h aux heures de dpart des vols en partance pour Ajaccio UPDATE vol SET Heure_depart=heure_depart+4/24 WHERE ville_arrivee=Ajaccio

Jrme FESSY

TP ORACLE PL/SQL Anne 1998

6.4) Afficher le salaire des pilotes avec le symbole montaire courant. SELECT TO_CHAR(salaire, 9999999D99L) Salaire en Francs FROM pilote ; 7) Question supplmentaire : reprendre la question 2 et la modifier pour que lheure insre soit dynamiquement lie la date du jour (fonction SYSDATE).
DECLARE date1 date2 ville1 ville2 char_date1 char_date2 BEGIN DATE ; DATE ; CHAR(10) :='Paris'; CHAR(20) := 'Londres'; VARCHAR2(30); VARCHAR2(30);

char_date1 := CONCAT(to_char(sysdate, 'DD-MM-YY'), ' 20:30'); char_date2 := CONCAT(to_char(sysdate, 'DD-MM-YY'), ' 21:30'); date1 := TO_DATE(char_date1, 'DD-MM-YY HH24:MI'); date2 := TO_DATE(char_date2, 'DD-MM-YY HH24:MI'); INSERT INTO vol VALUES ('RT200', date1, date2, ville1,ville2);

END; / SELECT numvol, TO_CHAR(heure_depart, 'DD-MM-YY HH24:MI') heure_dep, TO_CHAR(heure_arrivee, 'DD-MM-YY HH24:MI') heure_arr, ville_depart, ville_arrivee

FROM vol;