Gestion des exceptions
Exercice 1 Traitement des exceptions prédéfinies
Ecrire un bloc PL/SQL qui applique les exceptions prédéfinies pour traiter un enregistrement à la fois.
Le bloc PL/SQL
1- Créer la table messages en exécutant ce code :
DROP TABLE messages;
CREATE TABLE messages (results VARCHAR2(80));
2- Déclarer 2 variables : v_lname de même type que la colonne last_name et v_emp_sal de
même type que la colonne salary. Initialiser la dernière à 6000.
3- Le programme doit chercher les noms des employés dont le salaire est égal à v_emp_sal. Ne
pas utiliser un curseur.
4- Si un seul enregistrement est trouvé, insérer dans la table MESSAGE, le nom de l’employé et
son salaire.
5- Si aucun employé n’est trouvé, le programme doit générer une exception et insérer le
message ‘’ Aucun employé n’a pour salaire <<salaire>>’’.
6- Si le salaire retourne plusieurs employés, le programme doit générer une exception et
insérer le message ‘’ Plusieurs employé sont payés <<salaire>>’’.
7- Dans tous les autres cas, le programme doit générer une exception et insérer le message ‘’
Autre type d’erreur’’.
Exercice 2 Traitement des exceptions non prédéfinies
Ecrire un bloc PL/SQL qui déclare une exception pour l’erreur Oracle ORA-02292 (integrity constraint
violated – child record found). Le bloc affiche le message d’erreur associé à l’exception. Le bloc doit :
1- Déclarer une exception e_childrecord_exists et l’associer à l’erreur Oracle -02292.
2- Afficher le message ‘’Suppression du département 40…’’ et supprimer le département 40 ;
3- Ajouter une section pour traiter l’exception et afficher un message d’erreur adéquat.
Exemple d’exécution :
Exercice 3 Traitement des exceptions utilisateurs
CREATE TABLE analysis (ename VARCHAR2(20),
Year NUMBER(2),
Sal NUMBER (8,2)) ;
Créer un block PL/SQL avec exception :
1- Déclarer des variables pour stocker last_name, salary et hire_date. Utiliser une variable de
substitution pour saisir last_name. Ensuite, afficherlast_name, salary et hire_date pour cet
employé comme suit :
2- Si l’employé est dans l’entreprise depuis plus que 5 ans et si son salaire < 3500 une exception
est générée. L’exception affiche last_name de l’employé le message ‘’mérite une
augmentation’’. Insérer dans la table ANALYSIS le last_name, le nombre d’années de service
et le salaire de l’employé.
3- S’il n’y a pas d’exception le message affiché sera last_name suivi du message ‘’ ne mérite pas
une augmentation’’.