From: | Samuel ROZE <samuel(dot)roze(at)aliceadsl(dot)fr> |
---|---|
To: | Guillaume Lelarge <guillaume(at)lelarge(dot)info> |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: Tableau dans une requête |
Date: | 2009-09-13 16:49:40 |
Message-ID: | 1252860580.11394.79.camel@samuel-laptop |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
ERREUR: erreur de syntaxe sur ou près de « $1 »
LINE 1: ... FROM graphiques.critere WHERE lib_critere = ANY $1 GROUP ...
^
QUERY: SELECT id_couple_critere , count(*) FROM graphiques.critere WHERE lib_critere = ANY $1 GROUP BY id_couple_critere HAVING count(*) = array_upper( $1 , 1)
CONTEXT: SQL statement in PL/PgSQL function "getcouplecriteresid" near line 11
Il semblerait que ça ne marche pas... Je vais me pencher sur array_to_string, qui me semble être une bien bonne solution.
Le dimanche 13 septembre 2009 à 18:44 +0200, Guillaume Lelarge a écrit :
> Le dimanche 13 septembre 2009 à 18:22:48, Samuel ROZE a écrit :
> > [...]
> > CREATE OR REPLACE FUNCTION graphiques.getCoupleCriteresId ( v_criteres
> > varchar(50)[]) ) RETURNS integer AS $$
> > DECLARE
> > v_id_couple integer;
> > BEGIN
> > SELECT id_couple_critere , count(*) INTO v_id_couple
> > FROM graphiques.critere
> > WHERE lib_critere IN ANY 'v_criteres'::varchar(50)[]
> > GROUP BY id_couple_critere
> > HAVING count(*) = array_upper(v_criteres, 1);
> >
> > RETURN v_id_couple;
> > END;
> > $$ LANGUAGE plpgsql;
> >
> > J'ai une erreur lorsque je créé la fonction:
> >
> > ERREUR: erreur de syntaxe sur ou près de « ANY »
> > LINE 1: ...t(*) FROM graphiques.critere WHERE lib_critere IN ANY 'v_cri...
> > ^
> > QUERY: SELECT id_couple_critere , count(*) FROM graphiques.critere WHERE
> > lib_critere IN ANY 'v_criteres'::varchar(50)[] GROUP BY id_couple_critere
> > HAVING count(*) = array_upper( $1 , 1) CONTEXT: SQL statement in PL/PgSQL
> > function "getcouplecriteresid" near line 8
> >
> > Comment puis-je passer ce tableau dans une requête ?
> >
>
> Le problème n'est pas dans le paramètre, mais dans la requête du count(*). À
> première vue, je dirais qu'on ne fait pas un IN ANY mais un = ANY.
>
>
> --
> Guillaume.
> http://www.postgresqlfr.org
> http://dalibo.com
>
From | Date | Subject | |
---|---|---|---|
Next Message | Samuel ROZE | 2009-09-13 16:58:26 | Re: Tableau dans une requête |
Previous Message | Guillaume Lelarge | 2009-09-13 16:44:04 | Re: Tableau dans une requête |