Postgres променливите се създават чрез командата \set, например ...
\set myvariable value
... и след това може да бъде заменен, например, като ...
SELECT * FROM :myvariable.table1;
... или ...
SELECT * FROM table1 WHERE :myvariable IS NULL;
редактиране:От 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;