Bonjour,

J'avais déjà une procédure similaire qui fonctionnait bien.

Voilà le début du corps de la procédure que j'essaie de créer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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à
Et voici le message d'erreur renvoyé par MariaDB :
#1064 - Erreur de syntaxe près de ';

-- On vérifie par les infos fournies si la personne physique existe déj' à la ligne 69
"près de ;" => juste avant, il y a le END de l'EXIT HANDLER. C'est quoi le problème ?