Zmienne Postgres są tworzone za pomocą polecenia \ set, na przykład ...
\set myvariable value
... i można go następnie zastąpić, na przykład, jako ...
SELECT * FROM :myvariable.table1;
... lub ...
SELECT * FROM table1 WHERE :myvariable IS NULL;
edycja: Od wersji psql 9.1 zmienne można interpretować w cudzysłowach, jak w:
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
W starszych wersjach klienta psql:
... Jeśli chcesz użyć zmiennej jako wartości w warunkowym zapytaniu łańcuchowym, takim jak ...
SELECT * FROM table1 WHERE column1 = ':myvariable';
... wtedy musisz zawrzeć cudzysłowy w samej zmiennej, ponieważ powyższe nie zadziała. Zamiast tego zdefiniuj zmienną jako taką ...
\set myvariable 'value'
Jeśli jednak, tak jak ja, napotkasz sytuację, w której chciałeś utworzyć ciąg z istniejącej zmiennej, znalazłem trik w tym ...
\set quoted_myvariable '\'' :myvariable '\''
Teraz masz zmienną w cudzysłowie i niecytowaną, składającą się z tego samego ciągu! I możesz zrobić coś takiego ....
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;