RETURN cannot have a parameter in function with OUT parameters

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;
-----------------------

Responses

Browse pgsql-fr-generale by date

  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