Переменные 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;