Vous êtes sur la page 1sur 3

Année Universitaire : 2010-2011

EXAMEN
Session : Principale
Module : SGBD Documents autorisés : NON
Enseignants : Foued OUELBANI, Fethi FARHANI
Nombre de pages : 3
& Anis HOSNI
Date : Jeudi 10 février 2011 Heure : 11h30 Durée : 1h30
Classes : 4INFOB1 / 4INFOB2 / 4INFOB3 / 4INFINI / 4TELB1

Soient les tables SALARIES et TRANCHESALAIRES.


SALARIES
Colonne Type Taille Null Interdit Valide si Clé primaire
Empno Numérique NOT NULL [1,1000] Oui
Nom Texte 30 NOT NULL
Prenom Texte 30 NOT NULL
Salaire Numérique NOT NULL [500, 3000[
Salairecumule Numérique

TRANCHESALAIRES

Colonne Type Taille Null Interdit Clé primaire


Salairemin Numérique NOT NULL Salairemin et salairemax
Salairemax Numérique NOT NULL forment la clé primaire
Tranche Texte 50 NOT NULL
Description Texte 50 NOT NULL
a) Créer les tables salaries et tranchesalaires avec toutes les contraintes (2pts).
b) Créer une séquence seq qui démarre à 1 et s’incrémente de 10 (1pt).
c) Ecrire une fonction stockée fn_sal_cum ne prenant aucun paramètre et retourne la valeur
maximale de la colonne salairecumule de la table salaries. (2pts).
d) Ecrire un trigger trig_ins_salaries qui se déclenche avant insertion et calcule la valeur de
la colonne salairecumule : (Salairecumule = valeur maximale de la colonne
salairecumule + salaire actuelle) (3pts).
e) Ecrire une procédure stockée sp_ins_salaries permettant d’insèrer 1 ligne dans la table
Salaries. La colonne empno est alimentée à partir de la séquence seq créée dans la
question b) et la colonne salairecumule est remplie par le trigger trig_ins_salaries. La
procédure prend comme paramètre le nom, le prénom et le salaire. Elle doit traiter
l’exception utilisateur suivante :
Salaire incorrecte si le salaire < 500 ou > 3000 la ligne ne sera pas insérer et un
message doit êre affiché (3pts).
f) Ecrire une procédure stockée sp_upd_salaire qui prend 2 paramètres le numéro de
l’employé et le salaire et effectue les opérations suivantes :
- Traitement de l’exception aucune donnée trouvée (No_DATA_ FOUND) si le numéro
de l’employé est inexistant dans la table salaries.
- Mise à jour de la colonne salaire de l’employé en cours.
- Mise à jour de la colonne salairecumule pour tous les employés dont le numéro >=
numéro de l’employé en cours (4pts).
g) Ecrire une vue vue_sal_tranche qui affiche les informations suivantes : empno, nom,
prenom, salaire, tranche et description (2pts).
h) Ecrire une procédure stockée sp_sal_tranche qui parcourt toutes les lignes de la table
Salaries et affiche pour chaque employé les informations suivantes : empno, nom,
prenom, salaire, salairemin, salairemax, tranche et description. La procédure doit
retourner le nombre total des employés ainsi que le salaire total (3pts).

Bonne Chance
-------------------------------------------------------------------------------------------------------------------

CREATE [OR REPLACE] FUNCTION nom_fonction


[(argument1,…[argumentN)]
RETURN type_données_fonction IS
[déclaration des variables locales]
BEGIN
Instruction(s);
RETURN valeur_fonction ;
END [nom_fonction] ;
-------------------------------------------------------------------------------------------------------------------

CREATE [OR REPLACE] PROCEDURE nom_procedure


[(argument1…,[argumentN)]
IS
[déclaration_variables_locales]
BEGIN
Section exécutable
END [nom_procédure]
-------------------------------------------------------------------------------------------------------------------

CREATE [OR REPLACE] TRIGGER nom_trigger


{BEFORE|AFTER|INSTEAD OF}
{INSERT |UPDATE|DELETE}[OR] {INSERT |UPDATE|DELETE} [OR]
{INSERT |UPDATE|DELETE}
ON nom_table
for each row
BEGIN
Instructions ;
END;

Vous aimerez peut-être aussi