2016-12-19 5 views
0

ich einen SQL-Block haben (file.sql) als:POSTGRES pgplsql psql Befehlszeilenargument

DO $$ 
DECLARE 

var1 varchar; 
BEGIN 

    var1 := :key; 

END $$; 

Als ich diese .sql mit psql aufrufen,

psql -h localhost -v key="value" -U user -f file.sql postgredb 

Ich erhalte eine Fehlermeldung:

ERROR: syntax error at or near ":"

Wollen Sie wissen, warum die Kommandozeile nicht arg

aufgelöst zu werden
+1

Ich glaube nicht, dass Sie 'psql' Variablen in einem PL/pgSQL Block verwenden können –

Antwort

1

Ich glaube nicht, dass du das so kannst. Ich würde eine psql Funktion erstellen, die ein Argument von varchar (zB Schlüssel in Ihrem Beispiel) führt und dann würde ich es aus dem Terminal aufrufen mit:

psql -h localhost -U user postgredb -c "select updateValue('someValue');"

Sie dann alles, was in einigen wickeln können Bash-Skript der Funktion, so dass Sie es schneller aufrufen können ?.

Hoffe, dass hilft, Prost.

Verwandte Themen