2016-12-19 4 views
0

У меня есть SQL-блок (file.sql) как:POSTGRES командной строки pgplsql PSQL аргумент

DO $$ 
DECLARE 

var1 varchar; 
BEGIN 

    var1 := :key; 

END $$; 

Когда я вызываю эту .sql с PSQL,

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

Я получаю сообщение об ошибке:

ERROR: syntax error at or near ":"

Вы хотите знать, почему аргумент командной строки не получает решить

+1

Я не думаю, что вы можете использовать переменные psql внутри блока PL/pgSQL –

ответ

1

Я не думаю, что вы можете это сделать. Я бы создать функцию Psql, которая принимает один аргумент VARCHAR (например, ключ в вашем примере), а затем я бы вызвать его из терминала с:

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

Вы можете обернуть все, что в некоторых bash, чтобы вы могли быстрее его вызывать.

Надеюсь, что это помогает, приветствия.