Re: ERREUR: "$3" is declared CONSTANT

From: Samuel ROZE <samuel(dot)roze(at)aliceadsl(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: ERREUR: "$3" is declared CONSTANT
Date: 2008-08-31 10:01:02
Message-ID: 1220176862.6554.14.camel@samuel-laptop
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Re-Bonjour,

Une erreur très bête et en fait, très explicite :

C'était cette portion du code qui posait problème :

> IF (p_t != 0) THEN
> p_t := 1;
> END IF;

En fait, la variable "p_t" est une constante donc je n'ai pas le droit
de la modifier, il faut donc que je passe par une autre variable.

A bientôt.
Samuel.

Le dimanche 31 août 2008 à 11:48 +0200, Samuel ROZE a écrit :
> Bonjour à tous,
>
> J'ai crééer une fonction appelée "contact" dans ma base de données, qui,
> quand on l'appelle, renvoi l'ID du contact avec les noms et email donnés
> en paramètre. Si il n'y a pas de contact de ce nom/email, elle le créé
> et retourne à nouveau l'ID.
>
> Voici la structure de la table "contacts" :
> +-----------------+
> | contacts |
> +-----------------+
> | id SERIAL |
> | nom text |
> | email text |
> | actif integer |
> | maj timestamptz |
> | _trigger integer|
> +-----------------+
>
> Le dernier champ, "_trigger" sert à dire ou non si on veut que le
> trigger s'éxécute pour l'enregistrement.
>
> Maintenant, voici le code de ma fonction "contact" :
>
> -------------------------
> CREATE OR REPLACE FUNCTION clients.contact (p_nom text, p_email text,
> p_t integer) RETURNS integer AS $contact$
> DECLARE
> v_id integer DEFAULT 0;
> BEGIN
> IF (p_t != 0) THEN
> p_t := 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
> INSERT INTO clients.contacts (nom, email, _trigger) VALUES
> (p_nom, p_email, p_t);
> SELECT id INTO v_id FROM clients.contacts WHERE nom = p_nom AND
> email = p_email LIMIT 1;
> END IF;
> RETURN v_id;
> END;
> $contact$ language plpgsql;
> -------------------------
>
> Lorsque j'essaye de créer cette fonction, le compilateur plpgsql me sort
> cette erreur :
>
> -------------------------
> 5-clients-fonctions.sql:21: ERREUR: "$3" is declared CONSTANT
> CONTEXT: compile of PL/pgSQL function "contact" near line 10
> -------------------------
>
> La ligne 21 correspond à la ligne où il y as la requête "INSERT" dans la
> fonction "contact".
>
> Auriez-vous une idée sur le pourquoi de cette erreur ?
>
> Merci d'avance !
> Cordialement, Samuel ROZE.
>
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Christophe Chauvet 2008-08-31 17:22:20 Re: ERREUR: "$3" is declared CONSTANT
Previous Message Samuel ROZE 2008-08-31 09:48:44 ERREUR: "$3" is declared CONSTANT