Omdat de PL-blokken eigenlijk tekstconstanten in de code zijn, worden de interne variabelen er niet op de gebruikelijke manier in vervangen. Gelukkig is het mogelijk om sessievariabelen te gebruiken voor het delen van gegevens tussen verschillende SQL/PL-blokken:
set foo.bar to :v1; -- Name should contains the dot, don't ask me why
show foo.bar; -- Check that the value was assigned
do $$
declare
myvar text := current_setting('foo.bar');
begin
raise info '%', myvar; -- Output variable value
end $$;
Om ervoor te zorgen dat de variabele wordt toegewezen en de standaardwaarde in te stellen als dit niet het geval is:
\if :{?v1}
set foo.bar to :v1;
\else
set foo.bar to 'default';
\endif
Meer details:
https://www.postgresql.org/docs/current/app-psql.html#PSQL-METACOMMAND-IFhttps://www.postgresql.org/docs/current/app-psql.html #APP-PSQL-INTERPOLATIE