Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-fr-generale by date

Next:From: Guillaume LelargeDate: 2008-09-02 11:52:48
Subject: Re: RETURN cannot have a parameter in function with OUT parameters
Previous:From: BPascalDate: 2008-09-01 10:02:35
Subject: Re: Rechargement de page avec un insert et duplication

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group