Переменные Postgres создаются с помощью команды \ set, например ...
\set myvariable value
... и затем может быть заменен, например, как ...
SELECT * FROM :myvariable.table1;
... или ...
SELECT * FROM table1 WHERE :myvariable IS NULL;
edit: Начиная с psql 9.1, переменные можно расширять в кавычки, как в:
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
В старых версиях клиента psql:
... Если вы хотите использовать переменную в качестве значения в запросе условной строки, например ...
SELECT * FROM table1 WHERE column1 = ':myvariable';
... тогда вам нужно включить кавычки в саму переменную, так как вышеописанное не будет работать. Вместо этого определите вашу переменную как таковую ...
\set myvariable 'value'
Однако, если, как и я, вы столкнулись с ситуацией, в которой вы хотели создать строку из существующей переменной, я обнаружил, что уловка заключается в следующем ...
\set quoted_myvariable '\'' :myvariable '\''
Теперь у вас есть переменная в кавычках и без кавычек в одной строке! И вы можете сделать что-то вроде этого ...
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;