Vous n'êtes pas identifié(e).

#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. smile

Ça marche ! J'avais essayé psql --set myparameter='hello', mais sans les backslash, auxquels je n'avais pas pensés.

Hors ligne

Pied de page des forums