Postgres: использование конкатенации в тексте, отображаемом \ prompt - PullRequest
0 голосов
/ 16 октября 2019

В psql есть ли способ сделать текст \prompt объединением строк и переменных? Например, предположим, что в файле test.sql у нас есть:

\set name table_customers
\echo :name 
\prompt CONCAT('The table ', table_customers, ' was created') answer
\echo :answer

Выше не работает:

myuser=# \i /home/myuser/test.sql
table_customers
CONCAT(The table ,
psql:/home/myuser/test.sql:3: invalid variable name: "table_customers,"
:answer

Я также пытался:

\set name table_customers
\echo :name 
\prompt 'The table ' || table_customers || ' was created' answer
\echo :answer

Но это также не работает:

myuser=# \i /home/myuser/test.sql
table_customers
The table
psql:/home/myuser/test.sql:3: invalid variable name: "||"
:answer

Подставляя "||"с "+" дает то же самое.

Как правильно это сделать?

1 Ответ

0 голосов
/ 16 октября 2019

На самом деле я только что нашел рабочее решение: сначала просто объединяю в другую переменную (используя простые пробелы), а затем передаю эту новую переменную как \prompt текст:

\set name table_customers
\echo :name
\set input 'The table ' :name ' was created.'
\prompt :input answer
\echo :answer
...