Les variables Postgres sont créées via la commande \set, par exemple ...
\set myvariable value
... et peut alors être remplacé, par exemple, par ...
SELECT * FROM :myvariable.table1;
... ou ...
SELECT * FROM table1 WHERE :myvariable IS NULL;
edit :depuis psql 9.1, les variables peuvent être développées entre guillemets comme dans :
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
Dans les anciennes versions du client psql :
... Si vous souhaitez utiliser la variable comme valeur dans une requête de chaîne conditionnelle, telle que ...
SELECT * FROM table1 WHERE column1 = ':myvariable';
... alors vous devez inclure les guillemets dans la variable elle-même car ce qui précède ne fonctionnera pas. Définissez plutôt votre variable comme telle ...
\set myvariable 'value'
Cependant, si, comme moi, vous vous trouviez dans une situation où vous vouliez créer une chaîne à partir d'une variable existante, j'ai trouvé que l'astuce était celle-ci ...
\set quoted_myvariable '\'' :myvariable '\''
Vous avez maintenant une variable entre guillemets et sans guillemets de la même chaîne ! Et vous pouvez faire quelque chose comme ça ....
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;