Aide sur syntaxe des fonctions
Bonjour à tous,
Je suis actuellement en train de traduire des procédures stockées faites pour iSeries, pour une base Postgres, et je rencontre quelques soucis qui ne me semblent pas complexes mais je tourne en rond.
Cette procedure me retourne des enregistrements et selon les valeurs passées en paramètres, la requête exécutée est légèrement différente.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| CREATE FUNCTION P0600 (
IN V0 SMALLINT
, IN V1 CHARACTER(5)
, IN V2 CHARACTER(5)
, IN V3 CHARACTER(8)
, IN V4 CHARACTER(8)
)
RETURNS SETOF P0600_T AS
$$
DECLARE
rec P0600_T;
I1 VARCHAR(5000);
begin
I1 = 'MaRequete WHERE Champ1 = ''' || V1 || ''' AND Champ2 = ''' || V2 || '''';
IF v0 = 1 THEN
I1 = I1 || ' AND ((Champ3 >= ' || V3 || ' AND Champ4 < ' || V4 || ')
)';
ELSE
I1 = I1 || 'suite requete';
END IF;
FOR rec IN I1
LOOP
RETURN NEXT rec ;
END LOOP ;
RETURN ;
END;
$$
LANGUAGE 'plpgsql'; |
Voici le message d'erreur :
Code:
1 2 3
| ERROR: syntax error at or near "$1" at character 3
QUERY: $1
CONTEXT: SQL statement in PL/PgSQL function "p0600" near line 18 |
Le SQL en lui-même est bon mais je sais que le problème vient de mes déclarations variables, surtout de I1 qui me sert à construire la requête.
Je vous remercie pour votre aide et vos éclaircissements.