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

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

pgsql-fr-generale by date

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

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