Du kan ikke bruge psql-variabler direkte i plpgsql-koden. Symbolerstatningen er blokeret inde i strenge:
postgres=> select :'xx';
?column?
----------
AHOJ
(1 row)
postgres=> select ' :xx ';
?column?
----------
:xx
(1 row)
Men du kan indstille en serversessionsvariable og senere til at bruge denne slags variabler i plpgsql-kode (på serversiden):
postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin
raise notice '>>%<<', current_setting('myvars.xx');
end $$;
NOTICE: >>AHOJ<<
DO
Du kan bruge samme teknik fra kommandolinjen, se:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html
sidste note - koden
BEGIN SELECT some; END;
er ugyldig i plpgsql. Resultater af enhver SELECT
s skal gemmes i nogle variabler. Postgres har ikke mulighed for at returnere resultatet af gratis SELECT
til klient - DO
sætning svarer ikke til MS SQL-proceduren.