Proměnné psql nemůžete použít přímo v kódu plpgsql. Náhrada symbolů je blokována uvnitř řetězců:
postgres=> select :'xx';
?column?
----------
AHOJ
(1 row)
postgres=> select ' :xx ';
?column?
----------
:xx
(1 row)
Ale můžete nastavit proměnné relace serveru a později použít tento druh proměnných v kódu plpgsql (na straně serveru):
postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin
raise notice '>>%<<', current_setting('myvars.xx');
end $$;
NOTICE: >>AHOJ<<
DO
Stejnou techniku můžete použít z příkazového řádku, viz:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html
poslední poznámka - kód
BEGIN SELECT some; END;
je neplatný v plpgsql. Výsledky libovolného SELECT
s by měly být uloženy v některých proměnných. Postgres nemá možnost vrátit výsledek volného SELECT
klientovi - DO
není ekvivalentní proceduře MS SQL.