Vous n'êtes pas identifié(e).
Bonjour !
Je voudrais passer un paramètre à mon script SQL qui est lancé à partir de la ligne de commande via PSQL :
psql -d test -f test_myparam.sql --set myparameter=hello
Et dans le script, quelque chose comme :
create or replace function test_param(param text)
returns text
language 'plpgsql'
as $$
begin
etc...
end;
$$;
select test_param( :myparameter );
Mais voilà, il interprête :myparameter comme un nom de colonne (colonne hello - qui n'existe pas évidemment) alors ce doit être un string. J'ai essayé les quote_literal, ||, cast( as text), ::text, mais rien n'y fait. Il doit sûrement y avoir une solution syntaxique que je ne connais pas.
Merci de vos lumières!
/Lapi
Hors ligne
Il lui manque des quotes dans la ligne de commande
psql --set myparameter=\'hello\'
psql (9.1.3)
Saisissez « help » pour l'aide.
marc=# SELECT :myparameter;
?column?
----------
hello
(1 ligne)
Marc.
Hors ligne
Merci Marc, pour cette réponse rapide.
Ça marche ! J'avais essayé psql --set myparameter='hello', mais sans les backslash, auxquels je n'avais pas pensés.
Hors ligne