From: | Samuel ROZE <samuel(dot)roze(at)aliceadsl(dot)fr> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | RETURN cannot have a parameter in function with OUT parameters |
Date: | 2008-09-02 11:40:22 |
Message-ID: | 1220355622.7881.1.camel@samuel-laptop |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Bonjour à tous,
Toujours dans mon fonction "contact" de la dernière fois, PostgreSQL me
sort une erreur bizare avec une simple fonction plpgsql...
"5-clients-fonctions.sql:36: ERREUR: RETURN cannot have a parameter in
function with OUT parameters sur ou près de « v_id » at character 1486"
Je ne comprend vraiment pas qu'est-ce qu'il ce passe... Pouvez-vous
m'aider ? Ci-dessous la fonction concernée.
-----------------------
CREATE OR REPLACE FUNCTION clients.contact (p_nom text, p_email text,
inout TRIGGER integer) RETURNS integer AS $contact$
DECLARE
v_id integer DEFAULT 0;
BEGIN
IF (TRIGGER != 0) THEN
TRIGGER := 1;
END IF;
SELECT id INTO v_id FROM clients.contacts WHERE nom = p_nom AND
email = p_email LIMIT 1;
IF NOT FOUND THEN
-- Le couple nom/email n'as pas été trouvé. Cependant, est-ce
que l'adresse mail
-- existe déjà et est acceptée ?
PERFORM id FROM clients.contacts WHERE email = p_email AND actif
= 1;
IF FOUND THEN
TRIGGER := 0;
END IF;
INSERT INTO clients.contacts (nom, email, _trigger) VALUES
(p_nom, p_email, TRIGGER) RETURNING id INTO v_id;
IF (v_trigger = 0) THEN
-- Si on as choisi de pas faire éxécuter les triggers, mais
que l'on passe par ce trigger
-- c'est que le choix à été automatique dans 99% des cas.
-- Par conséquent, ça veux dire que l'adresse mail existe
déjà et est déjà activée.
-- On va donc pas chercher à envoyer un mail au contact pour
qu'il active son mail mais
-- pour valider l'ajout de l'adresse mail. Pour ça, on va
éxécuter un script PHP
-- similaire à celui de l'action du mail (même fichier PHP,
mais pas même action)
PERFORM clients."php-maj-contact"(v_id, 'nv', p_nom,
p_email);
-- nv = Nouveau
END IF;
END IF;
RETURN v_id;
END;
$contact$ language plpgsql;
-----------------------
From | Date | Subject | |
---|---|---|---|
Next Message | Guillaume Lelarge | 2008-09-02 11:52:48 | Re: RETURN cannot have a parameter in function with OUT parameters |
Previous Message | BPascal | 2008-09-01 10:02:35 | Re: Rechargement de page avec un insert et duplication |