Bonjour,

J'ai une procédure avec un paramètre INOUT :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
CREATE OR REPLACE PROCEDURE p_enregistrer_adresse
(
	INOUT id_adresse INTEGER, -- Identifiant de l'adresse (importée ou déjà proposée à l'utilisateur et qu'il a pu modifier ou vider)
Plus loin, j'ai ces tests :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
	IF id_adresse > 0 THEN
		-- id_adresse fourni => on cherche cette adresse en BDD
	ELSEIF id_adresse = 0 OR id_adresse = NULL OR adresseImportee = TRUE THEN
		-- id_adresse non fourni ou importé de pef_public => On cherche l'adresse par ses composantes
Si j'initialise l'appel de ma procédure avec 0, l'adresse est créée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SET @idAdresse = 0;
CALL p_enregistrer_adresse (@idAdresse, ... );
SELECT @idAdresse;
=>
Citation Envoyé par phpMyAdmin
@idAdresse
469
Si je l'initialise à NULL, rien ne se passe !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SET @idAdresse = NULL;
CALL p_enregistrer_adresse (@idAdresse, ... );
SELECT @idAdresse;
Citation Envoyé par phpMyAdmin
@idAdresse
NULL
Why ?

J'ai pensé que comme le paramètre attend un INT, la procédure pourrait ne pas s'exécuter en cas de NULL mais je n'ai rien dans sql_errors.