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

Re: Tableau dans une requête

From: Samuel ROZE <samuel(dot)roze(at)aliceadsl(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Tableau dans une requête
Date: 2009-09-13 17:35:19
Message-ID: 1252863319.11394.88.camel@samuel-laptop (view raw or flat)
Thread:
Lists: pgsql-fr-generale
Ok, USING est apparu avec la version 8.4, je suis "encore" à la 8.3...
Et bien je suis tanté de dire que c'est parti pour une mise à jour...
Sauf si, biensur, il y a d'autres idées de synthaxes qui marcheraient ??

Le dimanche 13 septembre 2009 à 19:12 +0200, Samuel ROZE a écrit :
> Même en utilisant EXECUTE, j'arrive à avoir une erreur ! :-/
> 
> Erreur SQL :
> 
> 
> ERREUR:  syntax error sur ou près de « USING »
> LINE 12:         HAVING count(*) = $2' INTO v_id_couple USING v_crite...
>                                                         ^
> 
> Dans l'instruction :
> 
> 
> CREATE OR REPLACE FUNCTION graphiques.getCoupleCriteresId ( v_criteres varchar(50)[] ) RETURNS integer AS $$
> DECLARE
>     v_id_couple integer;
>     v_criteres_str text;
> BEGIN
>     v_criteres_str := '{' || array_to_string(v_criteres, ',') || '}';
>     
>     EXECUTE 'SELECT id_couple_critere , count(*)
>         FROM graphiques.critere
>         WHERE lib_critere = ANY ''$1''
>         GROUP BY id_couple_critere
>         HAVING count(*) = $2' INTO v_id_couple USING v_criteres_str, array_upper(v_criteres, 1);
>     
>     RETURN v_id_couple;
> END;
> $$ LANGUAGE plpgsql;
> 
> Comment ce fait-ce d'après-vous ?
> 
> Merci !
> Samuel.
> 
> Le dimanche 13 septembre 2009 à 18:22 +0200, Samuel ROZE a écrit :
> > Re-Bonjour,
> > 
> > J'ai un nouveau problème, c'est lors du passage d'un tableau (variable)
> > dans une requête... Je ne vois pas bien comment faire, et surtout, je
> > n'ai rien trouver à propos de ça dans la doc.
> > 
> > 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 ?
> > 
> > Merci!
> > Cordialement, Samuel ROZE.
> > 
> > 
> 
> 


In response to

pgsql-fr-generale by date

Next:From: Guillaume LelargeDate: 2009-09-13 17:35:40
Subject: Re: Tableau dans une requête
Previous:From: Samuel ROZEDate: 2009-09-13 17:15:05
Subject: Re: Tableau dans une requête

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