Re: Syntax error when combining --set and --command has me stumped

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Syntax error when combining --set and --command has me stumped
Дата
Msg-id 4299f8dc-7d37-b88c-de12-ac6830d3e10a@aklaver.com
обсуждение исходный текст
Ответ на Syntax error when combining --set and --command has me stumped  (Ron <ronljohnsonjr@gmail.com>)
Список pgsql-general
On 7/28/22 12:40, Ron wrote:
> 
> $ alias psql12
> alias psql12='/usr/lib/postgresql/12/bin/psql -p5433'
> 
> This works ask expected:
> 
> $ psql12 --set num=42 -ac "\echo :num"
> echo :num
> 42
> 
> And so does this:
> 
> $ psql12 --set num=42
> psql (12.11 (Ubuntu 12.11-1.pgdg18.04+1))
> Type "help" for help.
> 
> postgres=# select :num;
>   ?column?
> ----------
>         42
> (1 row)
> 
> 
> But trying to use a variable (both with and without single quotes) in a 
> --command statement other than "\echo" throws a syntax error at the colon:
> 
> $ psql12 --set num=42 -ac "select :num;"
> select :num;
> ERROR:  syntax error at or near ":"
> LINE 1: select :num;
>                 ^
> $ psql12 --set num=42 -ac "select :'num';"
> select :'num';
> ERROR:  syntax error at or near ":"
> LINE 1: select :'num';
>                 ^
> 
> What secret sauce am I missing to get this to work?


 From here:

https://www.postgresql.org/docs/current/app-psql.html

-c command

...

Because of this behavior, putting more than one SQL command in a single 
-c string often has unexpected results. It's better to use repeated -c 
commands or feed multiple commands to psql's standard input, either 
using echo as illustrated above, or via a shell here-document, for example:

psql <<EOF
\x
SELECT * FROM foo;
EOF


So:

echo '\set num 42 \\ SELECT :num;' | psql -d test -U aklaver
Null display is "NULL".
  ?column?
----------
        42

or:

psql -d test -U aklaver <<EOF
 > \set num 42
 > SELECT :num;
 > EOF
Null display is "NULL".
  ?column?
----------
        42
(1 row)




-- 
Adrian Klaver
adrian.klaver@aklaver.com



В списке pgsql-general по дате отправления:

Предыдущее
От: Ron
Дата:
Сообщение: Re: Syntax error when combining --set and --command has me stumped
Следующее
От: Bryn Llewellyn
Дата:
Сообщение: « The PL/pgSQL interpreter parses the function's source text and produces an internal binary instruction tree... »