Vous êtes sur la page 1sur 2

Module : Bases de données Avancées

Abir Gorrab
4 ème ING PL/SQL
2020/2021

TP : Révision + Packages

Soit le schéma relationnel suivant :


ENSEIGNANT (num_ens, nom_ens, departement, grade, salaire)
ETUDIANT (num_et, nom_et, prenom_et, groupe_et)
COURS (#num_ens, #num_et, nom_cours, salle)

1. Ecrire une procédure PL/SQL qui :


- prend un numéro d’un enseignant en paramètre
- affiche le numéro, puis le nom de chaque étudiant enseigné par cet enseignant.
- gère les exceptions possibles
2. Ecrire une fonction qui calcule la moyenne des salaires des enseignants d’un département
dont le nom est passé en paramètre (de cette fonction).
Appeler par la suite cette fonction pour afficher la moyenne du département ‘INFO’ puis
‘Chimie’.
3. Ecrire une procédure PL/SQL permettant d’afficher la somme des salaires des enseignants
par département et par grade.

5. Ecrire un trigger nommé sal_cours qui interdit que le numéro de salle du cours ‘BDA’ soit
inférieur à 20.
6. Ecrire un package nommé Enseignement qui regroupe les objets de toutes les questions
précédentes. (à part la question 5)
7. Ecrire un bloc PL/SQL qui répond aux questions de 1 à 4 en appelant les objets
correspondants à partir du package.
8. Supprimer le package.
Exercice 2
1. Ecrire un package nommé learning contenant :
- Une procédure privée ajout_étudiant permettant d’insérer une nouvelle ligne dans
la table étudiant.

- Une procédure publique affectation qui ajoute un étudiant à la table étudiant, puis
affecte cet étudiant ajouté et un enseignant à un nouveau cours.

- Un curseur qui donne les noms des enseignants de l table enseignant.


2. Ecrire un programme qui appelle ces procédures qui appelle les objets de ce package
et affiche tous les enseignants de la table.

Exercice 3
1. Ecrire un package ‘augmentation’ permettant de :
- Définir une fonction publique ‘calcul augmentation’ qui reçoit le numéro d’une
personne et le pourcentage d’augmentation accordé et renvoie le montant de
l’augmentation.
- Définir une procédure publique ‘nouveau salaire’ qui, à partir du numéro
d’enseignant entré, nous donne son nouveau salaire augmenté (utiliser une variable
globale).
- Définir une procédure privée ‘affiche salaire’ permettant d’afficher tous les salaires
sous la forme
Num_Enseignant  Salaire
2. Ecrire un bloc PL/SQL qui
- affiche tous les salaires.
- Affiche le nouveau salaire d’un enseignant identifié par son numéro, met à jour son
salaire dans la table et modifie le grade à ‘MA’ si son salaire dépasse 4000.
Gérer les éventuelles exceptions.

3. Programmer un déclencheur qui vous empêche de mettre à jour un salaire de plus de


son double.
4. Supprimer le package ‘augmentation’.

Vous aimerez peut-être aussi