Postgres-variabler oprettes gennem kommandoen \set, for eksempel ...
\set myvariable value
... og kan derefter erstattes, for eksempel som ...
SELECT * FROM :myvariable.table1;
... eller ...
SELECT * FROM table1 WHERE :myvariable IS NULL;
rediger:Fra og med psql 9.1 kan variabler udvides i anførselstegn som i:
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
I ældre versioner af psql-klienten:
... Hvis du vil bruge variablen som værdien i en betinget strengforespørgsel, såsom ...
SELECT * FROM table1 WHERE column1 = ':myvariable';
... så skal du inkludere anførselstegnene i selve variablen, da ovenstående ikke virker. Definer i stedet din variabel som sådan ...
\set myvariable 'value'
Men hvis du, ligesom jeg, løb ind i en situation, hvor du ville lave en streng ud fra en eksisterende variabel, fandt jeg tricket til at være dette ...
\set quoted_myvariable '\'' :myvariable '\''
Nu har du både en citeret og ikke-citeret variabel af samme streng! Og du kan gøre sådan noget her ....
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;