Vous êtes sur la page 1sur 2

Institut Galilée INFO2

Année 2018-2019

TP PL-SQL

Objectif : Développement de blocs et de programmes PL/SQL, Notions de


procédures, de fonctions et de packages en PL/SQL, Notions de déclencheurs
(triggers)
n’oubliez pas set serveroutput on au niveau de sqlplus
Vous déposerez sur l’ENT le travail effectué pendant le TP.
Aucun envoi par mail sera accepté. Seuls les présents en TP seront
évalués.

Exercice 1
1. Ecrire un code PL/SQL qui calcule la factorielle d’un nombre > 0 saisi
par l’utilisateur. Le résultat sera stocké dans une table resu facto.
2. Modifier ce code pour qu’il calcule et stocke dans une table resu facto
les factorielles des 20 premiers entiers non nuls.
3. Ecrire un code PL/SQL qui affiche factorielle 5 à partir des résultats
stockés dans la table resu facto.
4. Ecrire un code PL/SQL qui affiche les factorielles de nombres pairs
inférieurs à 10, en utilisant les 10 premières lignes de resu facto.

Exercice 2
1. Ecrire une procédure PL/SQL newScreening(mvThr number,
cineId number, movieId number, startDate date, endDate
date) qui insère dans la table PLAY le nuplet passé en argument.
Testez cette procédure.
2. Ecrire une procédure searchScreeningDate (mvtitle in
varchar2, cinemaName in varchar2, screeningDate date)
qui vérifie si une séance de projection du film titleMovie dans le
cinéma cinemaName à la date screeningDate et affiche un message
indiquant si la séance existe ou non.
3. Ecrire une procédure qui repousse d’une semaine la fin d’une séance
(dont le numéro du cinéma, le numéro de la salle, le numéro du film
et la date de début de diffusion seront passés en argument).

1
4. Ecrire un code PL/SQL qui repousse d’une semaine la fin des séances
dont les films ont le score dépasse 90%.
5. Ecrire une procédure getScreening (mvTitle in varchar2,
cinemaName in varchar2, startDate out date, endDate out
date) qui récupère les dates de la première et de la dernière séance
du film mvTitle dans le cinéma cinemaName passé en paramètre.
Si le film ou le cinéma n’est pas connu dans la base, une exception
devra être levée, et un message d’erreur affiché.
6. Ecrire une procédure PL/SQL newScreeningRand (sans arguments)
qui insère dans la table PLAY une nouvelle séance en utilisant les in-
formations accessibles dans le DUAL. Testez cette procédure.
7. Ecrire un code PL/SQL qui insère 100 nuplets dans la table PLAY.

Exercice 3
Ecrire une package PL/SQL pkScreening qui contient la fonction et la
procédure suivantes :
1. Fonction screeningAvg(mvtitle in varchar2) qui calcule le nombre
moyenne de séances de projection (en nombre de semaines) du film
mvtitle par cinéma. Testez la fonction.
2. Procédure screeningAvgMovie qui calcule et affiche le nombre moyenne
de séance de projection (en nombre de semaines) de chaque film et af-
fiche une étoile par semaine de projection. Cette procédure utilisera
une fonction screeningAvg. Testez la procédure.

Vous aimerez peut-être aussi