Re: psql variables in the DO command
От | Pavel Luzanov |
---|---|
Тема | Re: psql variables in the DO command |
Дата | |
Msg-id | e9c976bc-60b8-1bf0-428b-1fdc22596041@postgrespro.ru обсуждение исходный текст |
Ответ на | Re: psql variables in the DO command (Pavel Luzanov <p.luzanov@postgrespro.ru>) |
Список | pgsql-general |
Another possible, but inconvenient workaround - constructing the right string before execution:
postgres=# \set var 'Hello, World!'
postgres=# \set cmd '$$begin raise notice ''%'', ' :'var' '; end;$$;'
postgres=# do :cmd;
NOTICE: Hello, World!
DO
postgres=# \set var 'Hello, World!'
postgres=# \set cmd '$$begin raise notice ''%'', ' :'var' '; end;$$;'
postgres=# do :cmd;
NOTICE: Hello, World!
DO
----- Pavel Luzanov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
On 05.03.2018 17:02, Pavel Luzanov wrote:
On 05.03.2018 16:56, Pavel Stehule wrote:
Yes, now I understand this. But at first glance this is not an obvious behavior.I can't use psql variable in the DO command. Is it intentional behavior?yes. psql variables living on client side, and are not accessible from server side . DO command is executed on server side.
But SELECT command also executed on a server side ))
I thought that the command is sent to the server after variable's replacement.The psql variables are injected into SQL string before execution (before SQL string is sent to server). But this injection is disabled inside strings - and body of DO command is passed as string.----- Pavel Luzanov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company
В списке pgsql-general по дате отправления: