Vous êtes sur la page 1sur 6

PARTIE PL/SQL

Module : Système de gestion des bases de


données
PROJET PL/SQL - Partie 2 du Module SGBD

TRAVAIL DEMANDE :

Dans la Société PIXELIRIS et dans le cadre de d’un projet de migration des données relatives au
service de gestion des ressources humaines de la société vers un PORTAIL NUMERIQUE se basant
sur le système de gestion des bases de données ORACLE, le directeur de la société vous délègue
cette tache. L’application doit permettre de gérer plusieurs modules parmi lesquels :

- Le traitement des données de la base « personnelle »


- Le suivi des carrières ...

Le directeur vous propose de travailler sur le schéma relationnel relatif à la base de données, déjà
établi par des anciens ingénieurs et contenant toutes les données nécessaires pour implémenter
l’application demandée.

Le SCHEMA RELATIONNEL est le suivant :

Afin de créer cette application, on vous demande de suivre les étapes suivantes :

1
PROJET PL/SQL - Partie 2 du Module SGBD

ETAPE I : BLOCS ANONYMES et CURSEURS

ECRIRE LES BLOCS ANONYMES PL/SQL PERMETTANT DE :

1. Calculer et afficher la moyenne des salaires des employés qui travaillent dans les
départements 20 et 30.
2. Afficher les détails du manager de l’employé 101.
3. Afficher pour chaque département le nombre de ces employés, le salaire le plus élevé, le
salaire le plus faible ainsi que le Salaire moyen.
4. Afficher l'année où un nombre maximal d'employés a été embauché en précisant le
nombre de personnes embauchées chaque mois de cette année.

5. Afficher les 6 premiers employés ayant les salaires les plus élevés. Pour chacun de ces
employés, afficher leur nom, leur JOB_ID ainsi que leur salaire.
Ordonner le résultat de telle sorte que le premier employé est celui ayant le salaire le plus
élevé.
6. Afficher le cinquième et dixième employé de la table EMPLOYEES.

7. Afficher un état de tous les pays et les villes correspondantes pour tous les départements.
Pour ce faire utiliser les tables COUNTRIES et LOCATIONS.
Dans un premier curseur, afficher à partir de la table COUNTRIES, le pays ainsi que son ID.
Dans un deuxième curseur paramétré, extraire le(les) ville(s) et le(les) STATE_PROVINCE
relatif à chaque pays.
Trier les villes par ordre croissant de leur ID et les villes par ordre croissant de leur nom.
8. Echanger les salaires des employés 120 et 122.
9. Augmenter le salaire de l'employé 115 sur la base des conditions suivantes:
- Si l'expérience est plus de 10 ans, augmenter le salaire de 20%
- Si l'expérience est supérieure à 5 ans, augmenter le salaire de 10%
- Sinon l’augmenter seulement de 5%.
10. Changer le pourcentage de commission comme suit pour l’employé avec l'ID égale à 150.
- Si le salaire est supérieur à 10000, la commission est de 0,4%,
- si le salaire est inférieur à 10000, mais l'expérience est de plus de 10 ans, la commission
est de 0,35%,

2
PROJET PL/SQL - Partie 2 du Module SGBD

- si le salaire est inférieur à 3000 alors la commission est de 0,25%.


- Dans les cas restants commission est de 0,15%.
11. Mettre à jour le salaire d'un employé en fonction du service et le pourcentage de
commission comme suit :
- Si l’id du département est 40 alors augmentation salariale de 10%.
- Si département est de 70 alors 15%,
- Si la commission est plus de 0,3% alors 5% d’augmentation en plus sinon 10%
d’augmentation.

PARTIE II : FONCTIONS ET PROCEDURES STOCKEES

1. Ecrire une fonction stockée « FN_NBREDEPARTEMENT » permettant de retourner le


nombre total des départements.

2. Ecrire une fonction stockée « FN_NOMDEPT » qui prend en paramètre l’id de l’employé et
qui retourne le nom du département auquel il est associé.

3. Ecrire une fonction stockée « FN_SALAIRE » qui retourne le salaire d’un employé dont
l’identifiant est donné en paramètre d’entrée.
4. Ecrire une fonction stockée « FN_NBR_SALARIE » qui prend en paramètre le numéro d’un
département et retourne le nombre de ces salariés.

Traduire cette fonction en une procédure stockée « PROC_NBR_SALARIE ».

5. Ecrire une procédure stockée « PROC_TEST_NBR_SALARIE » qui permet d’afficher les noms
des départements dont le nombre des salariés est supérieur à 40.

Utilisez la fonction stockée « FN_NBR_SALARIE » déjà créée, sachant que l’identifiant du


département est compris entre 10 et 110, et qu’il est incrémenté de 10.

6. Ecrire une procédure stockée « PROC_ANNEE_DEMBAUCHE » permettant d’afficher les


années au cours desquelles plus de 10 salariés ont été embauché.

7. Ecrire une procédure stockée « PROC_JOBHISTORY » permettant d’afficher la liste des


employés qui ont changé de poste au minimum une fois.

3
PROJET PL/SQL - Partie 2 du Module SGBD

8. Ecrire une procédure stockée « PROC_LISTE_DES_EMP » permettant d’afficher la liste de


tous employés.
9. Ecrire une procédure stockée « PROC_LISTE_EMP_DEPT » permettant d’afficher pour
chaque département la liste de ces employés. Afficher leur nom et prénom.
10. Ecrire une procédure stockée « PROC_LISTE_EMP » permettant d’afficher la liste des
employés dirigés par le manager dont l’identifiant est donné comme paramètre d’entrée.
Affichez leurs noms et prénoms et leurs salaires.
11. Ecrire une procédure stockée « PROC_LISTE_EMP2 » permettant d’afficher les noms des
employés, l’année de leur embauche seulement s’ils ont été embauchés avant leur
manager.
12. Ecrire une fonction stockée « FN_MOY_SALAIRE » qui retourne le salaire moyen du
département auquel appartient l’employé dont l’identifiant est donné comme paramètre
d’entrée.
13. Ecrire une procédure stockée « PROC_SAL_SUP » qui permet d’afficher la liste des
employés qui ont un salaire supérieur à celui dont l’identifiant est donné en paramètre.
Utilisez cette procédure pour afficher ceux qui ont un salaire supérieur à l’employé 121.
14. Ecrire une fonction stockée « FN_TRIMESTRE » permettant de retourner le numéro du
trimestre d’une date passée en paramètre.
Utilisez cette fonction pour afficher ceux qui ont été embauché le troisième semestre de
l’année 1980.

PARTIE IV: LES DECLENCHEURS ET EXCEPTIONS

ECRIRE LES TRIGGERS PERMETTANT DE :

1. Afficher avant et après chaque insertion dans la table EMPLOYEES respectivement les
messages suivants: « Début d’insertion » et « Fin d’insertion »
2. Afficher avant chaque insertion, mise à jour ou suppression dans la table DEPARTMENTS
respectivement les messages suivants : « Insertion », « Modification » ou « Suppression ».
3. Vérifier pour chaque nouvelle insertion dans la table EMPLOYEES si l’employee_id <1000
alors il génère une exception affichant le message suivant « Numéro employé inférieur à
10000 ».

4
PROJET PL/SQL - Partie 2 du Module SGBD

4. Vérifier avant la mise à jour ou l’insertion dans la table employée l’existence du numéro
de département dans la table DEPARTMENTS.
5. Vérifier si les noms et les prénoms ajoutés ou mis à jours dans la table EMPLOYEES
commencent par majuscule ou non.
6. Interdire toutes modifications qui peuvent être apportées à la table EMPLOYEES avant 6
heures du matin et après 23 heures du soir.
7. Historier les informations suivantes dans la table JOB_HISTORY à chaque fois qu’un
employé a changé de poste : ID de l'employé, ancien ID d'emplois, ancien manager ID, la
date d'embauche de l'employé pour la date de début, date de système de date de fin. Mais
si une ligne est déjà présente au niveau de la table EMPLOYEES, la date de départ devrait
être la date de cette ligne une de fin.

Vous aimerez peut-être aussi