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:12:26 |
Message-ID: | 1252861946.11394.85.camel@samuel-laptop |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
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.
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Samuel ROZE | 2009-09-13 17:15:05 | Re: Tableau dans une requête |
Previous Message | Guillaume Lelarge | 2009-09-13 17:07:56 | Re: Tableau dans une requête |