1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| BEGIN
DECLARE nombre INT DEFAULT 0; -- Utilisé pour les comptages
DECLARE personne_creee BOOLEAN DEFAULT FALSE; -- Personne créée par cette procédure (à effacer en cas d'erreur)
-- Handler d'erreur
DECLARE constraint_exception CONDITION FOR SQLSTATE '23000'; -- Erreur de contrainte
DECLARE EXIT HANDLER FOR constraint_exception
BEGIN
GET DIAGNOSTICS @nb_errors = NUMBER;
GET DIAGNOSTICS CONDITION @nb_errors
@errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
IF LOCATE('fk_pph_id_civilite', @text) > 0 THEN
SET @errno = 10003;
SET @text = 'Identifiant de la civilité non valide';
ELSE IF LOCATE('fk_pph_id_sexe', @text) > 0 THEN
SET @errno = 10007;
SET @text = 'Identifiant du sexe non valide';
ELSE IF LOCATE('fk_pph_id_nationalite', @text) > 0 THEN
SET @errno = 10008;
SET @text = 'Identifiant de la nationalité non valide';
ELSE IF LOCATE('fk_pph_id_ville_naissance', @text) > 0 THEN
SET @errno = 10009;
SET @text = 'Identifiant de la ville non valide';
END IF;
IF personne_creee = TRUE THEN
-- Erreur survenue lors de l'enregistrement de la personne physique => on supprime la personne déjà créée
DELETE FROM te_personne_prs
WHERE prs_id = id_personne;
END IF;
-- Renvoi de l'erreur
SIGNAL SQLSTATE VALUE '23000'
SET MYSQL_ERRNO = @errno, MESSAGE_TEXT = @text;
END;
-- On vérifie par les infos fournies si la personne physique existe déjà |
Partager