Vous êtes sur la page 1sur 3

TP

exercise 1.
Ecrire une fonction PLSQL qui prend en paramètre un nom d’employé et renvoie son salaire. Vous
devez utiliser la syntaxe suivante
CREATE OR REPLACE FUNCTION nom_fonction (nom_param in type_param)
RETURN Type_de_Retour IS
-- Déclaration de variables.
BEGIN
-- Corps de la fonction
RETURN Valeur_de_retour;
END;
/
Pour voir le résultat de votre fonction, vous pouvez utiliser la syntaxe suivante :
DECLARE
BEGIN
dbms_output.PUT_LINE(Nom_de_Fonction(Parametres,…));
END;
/
exercise 2
Sur le même principe, modifier votre fonction pour qu’elle prenne en entrée un nom et qu’elle
renvoie le message suivant :
« NUMERO = Valeur, POSTE = Valeur, SALAIRE = Valeur »

un nouveau département, et affecte au département cet employé.

exercise 3
Ecrire une fonction exist_emp qui renvoie VRAI si l’employé passé en paramètre se trouve dans la
table EMP sinon elle renvoie FAUX.

exercise 4
Ecrire une fonction app_emp_dept qui affiche « cet employé appartient au département xxxxxxxxxx
» si l’employé fait bien partie du département passé en paramètre sinon affiche « cet employé
n’appartient pas au département xxxxxxxx »

exercise 5
Ecrire un programme maj_emp qui met à jour les salaires selon la nouvelle politique de la direction.
Vous devez :
- Réduire les salaires des employés du département Recherche de 200€
- Augmenter les salaires du département Développement de 40€
- Multiplier par 2 les salaires du département Direction

1
- Mettre les salaires des employés du département Facturation à la moyenne des salaires des
employés.

Trigger

Syntaxe
CREATE OR REPLACE TRIGGER Nom_Trigger{BEFORE | AFTER | INSTEAD OF}{événement LMD } ON
Nom_Table FOR EACH ROW
DECLARE
Déclaration des variables
BEGIN
Corps du programme
END;
/
Exemple de trigger qui se déclenche avant l’insertion d’une ligne dans la table EMP :
CREATE OR REPLACE TRIGGER MONTRIGGER BEFORE INSERT ON EMP FOR EACH ROW

Pour l’utilisation des triggers nous avons souvent besoin de la valeur de la colonne avant
modification « :OLD » et la valeur qui va être modifiée ou insérée « :NEW »
Exemple :
Avant le renommage de l’employé BARTH en SUPERBARTH :
:NEW.NOMEMP vaut SUPERBARTH et :OLD.NOMEMP vaut BARTH.

exercise 6
Ecrire un trigger sur la table DEPT qui préfixe le nom du département par « DEPT_ » inséré dans la
table. Le trigger se déclenchera avant l’insertion d’une ligne.
Par exemple :
INSERT INTO DEPT (NUMDEP, NOMDEP, NOMLOC) VALUES (5, 'ENSEIGNEMENT', ‘LYON');
COMMIT;
Donnera dans la table
« DEPT_ ENSEIGNEMENT” pour la colonne « NOMDEP ».
exercise 7
Modifier votre trigger afin d’obliger la personne qui tente d’insérer un nouveau département à
renseigner correctement « NOMLOC » par une des valeurs déjà présentes dans la table.

exercise 8
On peut utiliser aussi les triggers afin de gérer les numéros automatiques des clés primaires. Pour
cela il faut utiliser une séquence :
CREATE SEQUENCE MONCOMPTEUR INCREMENT BY 1 START WITH 1;
Voilà par exemple comment récupérer la prochaine valeur de la séquence dans un script d’insertion :
INSERT INTO EMP (MONCOMPTEUR.NEXTVAL, ‘TOTO’, ‘CHARLI’, ‘2000’,’CHEF’,1) ;
Ecrire un trigger lié à la table EMP qui, quelque soit la valeur mise dans NUMEMP lors d’une
insertion, s’arrange pour utiliser la séquence et numérote correctement les clés.

exercise 9

2
Supprimer le trigger sur la table « DEPT » en utilisant la commande :
DROP TRIGGER nom_trigger ;
Puis modifier votre trigger lié à la table « EMP » afin qu’en plus de générer automatiquement les
numéros identifiants des employés, ce trigger teste la colonne « NUMDEPT » et dans le cas où le
numéro n’existe pas dans la table « DEPT », un département « NON ATTRIBUE » sera créé avec le
numéro posant problème.

EMPLOYE

NUMEMP NOM COMPLET PROFESSION CHEF SALAIRE NUMDEP

1 BARTH Florent CHEF DE PROJET 3 13000 2


2 CHBEIR Richard CHERCHEUR 3 21000 1
3 NICOLLE Christophe CHERCHEUR 25000 1
4 BLAKE John DEVELOPPEUR 6 8000 2
5 DUPONT Jean DEVELOPPEUR 3 9000 2
6 MARTIN Alexandre COMPTABLE 3 10000 3
7 RAY Benjamin COMPTABLE 3 10000 3
8 MILLER Pascal DEVELOPPEUR 3 9000 2
9 FORD John DIRECTEUR 3 30000 4

DEPARTEMENT

NUMDEP NOMDEP NOMLOC


1 RECHERCHE DIJON
2 DEVELOPPEMENT NEW-YORK
3 FACTURATION PARIS
4 DIRECTION LONDRES

Vous aimerez peut-être aussi