Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 09/03/2012 15:10:47
- lapinos03
- Membre
Passer un paramètre à un script en ligne de commande (psql)
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
#2 09/03/2012 15:23:00
- Marc Cousin
- Membre
Re : Passer un paramètre à un script en ligne de commande (psql)
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
#3 09/03/2012 16:05:11
- lapinos03
- Membre
Re : Passer un paramètre à un script en ligne de commande (psql)
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