Proměnné Postgresu se vytvářejí pomocí příkazu \set, například ...
\set myvariable value
... a pak může být nahrazen, například jako ...
SELECT * FROM :myvariable.table1;
... nebo ...
SELECT * FROM table1 WHERE :myvariable IS NULL;
edit:Od psql 9.1 lze proměnné rozšiřovat v uvozovkách jako v:
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
Ve starších verzích klienta psql:
... Pokud chcete použít proměnnou jako hodnotu v podmíněném řetězcovém dotazu, jako je ...
SELECT * FROM table1 WHERE column1 = ':myvariable';
... pak musíte zahrnout uvozovky do samotné proměnné, protože výše uvedené nebude fungovat. Místo toho definujte svou proměnnou jako takovou ...
\set myvariable 'value'
Pokud jste se však jako já dostali do situace, kdy jste chtěli vytvořit řetězec z existující proměnné, zjistil jsem, že trik je tento ...
\set quoted_myvariable '\'' :myvariable '\''
Nyní máte proměnnou v uvozovkách i bez uvozovek stejného řetězce! A můžete udělat něco takového ....
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;