Code : SQL
CALL ajouter_adoption(12, 21, @date_adoption, 1);
Code : Console
ERROR 1062 (23000): Duplicate entry '21' for key 'ind_uni_animal_id'
Exemple 3 : l'animal n'existe pas, v_prix est donc NULL.
Code : SQL
CALL ajouter_adoption(12, 102, @date_adoption, 1);
Code : Console
ERROR 1048 (23000): Column 'prix' cannot be null
Pour empêcher ces erreurs intempestives, deux solutions :
vérifier chaque paramètre pouvant poser problème (p_animal_id et p_client_id ne sont pas NULL et correspondent à
quelque chose dans les tables Animal et Client, p_animal_id ne correspond pas à un animal déjà adopté, etc.) ;
utiliser un gestionnaire d'erreur : c'est ce que nous allons apprendre à faire ici.
Création d'un gestionnaire d'erreur
Voici la syntaxe à utiliser pour créer un gestionnaire d'erreur :
Code : SQL
DECLARE { EXIT | CONTINUE } HANDLER FOR { numero_erreur | { SQLSTATE
identifiant_erreur } | condition }
instruction ou bloc d'instructions
Un gestionnaire d'erreur définit une instruction (une seule !), ou un bloc d'instructions (BEGIN ... END;), qui va être
exécuté en cas d'erreur correspondant au gestionnaire.
Tous les gestionnaires d'erreur doivent être déclarés au même endroit : après la déclaration des variables locales, mais
avant les instructions de la procédure.
Un gestionnaire peut, soit provoquer l'arrêt de la procédure (EXIT), soit faire reprendre la procédure après avoir géré
l'erreur (CONTINUE).
On peut identifier le type d'erreur que le gestionnaire va reconnaître de trois manières différentes : un numéro d'erreur,
un identifiant, ou une CONDITION.
Un gestionnaire étant défini grâce au mot-clé DECLARE, comme les variables locales, il a exactement la même portée que
celles-ci.
Exemples : ces deux procédures enregistrent une adoption en gérant les erreurs, l'une arrêtant la procédure, l'autre relançant
celle-ci :
Code : SQL
DELIMITER |
Partie 5 : Sécuriser et automatiser ses actions
295/414
www.openclassrooms.com
CALL ajouter_adoption(12, 21, @date_adoption, 1);
Code : Console
ERROR 1062 (23000): Duplicate entry '21' for key 'ind_uni_animal_id'
Exemple 3 : l'animal n'existe pas, v_prix est donc NULL.
Code : SQL
CALL ajouter_adoption(12, 102, @date_adoption, 1);
Code : Console
ERROR 1048 (23000): Column 'prix' cannot be null
Pour empêcher ces erreurs intempestives, deux solutions :
vérifier chaque paramètre pouvant poser problème (p_animal_id et p_client_id ne sont pas NULL et correspondent à
quelque chose dans les tables Animal et Client, p_animal_id ne correspond pas à un animal déjà adopté, etc.) ;
utiliser un gestionnaire d'erreur : c'est ce que nous allons apprendre à faire ici.
Création d'un gestionnaire d'erreur
Voici la syntaxe à utiliser pour créer un gestionnaire d'erreur :
Code : SQL
DECLARE { EXIT | CONTINUE } HANDLER FOR { numero_erreur | { SQLSTATE
identifiant_erreur } | condition }
instruction ou bloc d'instructions
Un gestionnaire d'erreur définit une instruction (une seule !), ou un bloc d'instructions (BEGIN ... END;), qui va être
exécuté en cas d'erreur correspondant au gestionnaire.
Tous les gestionnaires d'erreur doivent être déclarés au même endroit : après la déclaration des variables locales, mais
avant les instructions de la procédure.
Un gestionnaire peut, soit provoquer l'arrêt de la procédure (EXIT), soit faire reprendre la procédure après avoir géré
l'erreur (CONTINUE).
On peut identifier le type d'erreur que le gestionnaire va reconnaître de trois manières différentes : un numéro d'erreur,
un identifiant, ou une CONDITION.
Un gestionnaire étant défini grâce au mot-clé DECLARE, comme les variables locales, il a exactement la même portée que
celles-ci.
Exemples : ces deux procédures enregistrent une adoption en gérant les erreurs, l'une arrêtant la procédure, l'autre relançant
celle-ci :
Code : SQL
DELIMITER |
Partie 5 : Sécuriser et automatiser ses actions
295/414
www.openclassrooms.com
