Académique Documents
Professionnel Documents
Culture Documents
1. Créer les blocs PLSQL qui répondent aux questions suivantes : (un bloc par question)
a) Utiliser premièrement une variable de même type que les enregistrements de la table
« employees » pour afficher toutes les informations initiales de l’employé dont le matricule
est saisi par l’utilisateur.
c) Enfin, utiliser une variable « RECORD » pour afficher et modifier les mêmes
informations de l’employé.
d) Utiliser une variable de session Oracle, pour stocker la date la plus ancienne de
recrutement des employés et l’afficher à la fin.
2. Créer un bloc PLSQL qui utilise un curseur explicite permettant d’afficher les informations
des départements qui comptabilisent le même nombre d’employés que le département numéro
30. Le curseur doit comprendre aussi la masse salariale par département.
3. Réécrire le bloc PLSQL précédent en intégrant le curseur dans une boucle FOR.
4. Modifier la boucle FOR en utilisant un curseur avec paramètre « numdep » dont sa valeur est
rentrée par l’utilisateur. Cette fois-ci, les départements affichés doivent comptabiliser le même
nombre d’employés que le numéro de département passé en paramètre.
TP EXCEPTIONS
Procédures stockées
-Si la commission est nulle alors le message « commission est nulle » est affiché.
-Si non majorer la commission de l’employé par un taux introduit par l’utilisateur. La
commission est affichée avant et après la mise à jour.
8. Créer une procédure stockées qui permet d’afficher les noms des n premiers employés
d’un département donné. Gérer le cas où n est supérieur au nombre des employés du
département.
9. Créer une procédure stockée qui permet de copier le contenu d’une table dans une
nouvelle vue. Le nom de la nouvelle vue doit correspondre à cette chaine :
« Vue_nomtable ».
10. Ecrire une procédure stockée «dep_nbremp » qui récupère le nombre d’employés
qu’un département donné contient dans un paramètre de sortie outnbremp de type
Number.
a- Déclarer une variable cptemp de type Number dans l’environnement SQLPLus
b- afficher ensuite la valeur du paramètre de sortie par le biais du cptemp.
Fonction stockées
3- Afficher la liste des fonctions stockées créées par tous les utilisateurs.
4- Afficher la liste des fonctions stockées par l’utilisateur en cours
5. Écrire une fonction qui permet d’insérer un enregistrement dans la table employés et
qui retourne le numéro d’employé inséré. l’insertion utilise une séquence.
TP sur les triggers
Exercice 1 :
Créer un trigger « employe_insert » qui permet de vérifier si le salaire d’un employé est
<5000. Si le cas se présente, il insère automatiquement 5000.
Exercice 2 :
Créer un trigger « employé_embauche» qui permet de vérifier, lors de l’insertion d’un
employé, si la date d’embauche est inférieure à la date système, dans le cas échéant, afficher
un message d’erreur «La date d’embauche est supérieure à la date système».
Insérer dans la base l’enregistrement suivant pour vérifier votre solution.
Exercice 3 :
Écrire un trigger qui permet de contrôler les ajouts et les modifications des salaires. Si le JOB
n’est pas ‘PRESIDENT’, alors Lors de l’ajout, modification d’un nouvel employé, nous
devons vérifier si le salaire de celui-ci se retrouve dans la fourchette des salaires. Les salaires
sont en fonction de JOB et sont dans la table Grille.
Exercice 4 :
Pour archiver l’historique des opérations de mise à jour de la table Employees, on a crée une
table History (employee_id, operation_date, operation_type). Ecrire un trigger permettant,
après l’exécution de chaque opération sur Employees, d’ajouter un tuple concernant cette
opération à la table History.
Exercice 5 :
Soit le schéma relationnel suivant :
ETUDIANT (numEtud, nom, prenom , datenaiss, civilite, numsecu);
MODULE (codMod, nomMod, effecMax);
EXAMEN (codMod#, codExam, dateExam);
INSCRIPTION (numEtud#, codMod#, dateInsc);
PREREQUIS (codMod#, codModPrereq, noteMin);
RESULTAT (codMod#, codExam#, numEtud#, note)
A) Créer la base de données qui correspond au schéma relationnel ci-dessus tout en prenant en
considération les contraintes décrites dans le tableau suivant :
Colonne Contrainte
numsec non nul
effecMax valeur par défaut 30
dateInsc valeur par défaut est la date système
noteMin non nul
Civilite appartient à cette liste ('Mr', 'Mme', 'Mlle')