Du kan inte använda en psql-variabel i plpgsql-koden direkt. Symbolersättningen är blockerad inuti strängar:
postgres=> select :'xx';
?column?
----------
AHOJ
(1 row)
postgres=> select ' :xx ';
?column?
----------
:xx
(1 row)
Men du kan ställa in en serversessionsvariabler och senare att använda den här typen av variabler i plpgsql-kod (på serversidan):
postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin
raise notice '>>%<<', current_setting('myvars.xx');
end $$;
NOTICE: >>AHOJ<<
DO
Du kan använda samma teknik från kommandoraden, se:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html
sista anteckningen - koden
BEGIN SELECT some; END;
är ogiltig i plpgsql. Resultat av någon SELECT
s bör lagras i vissa variabler. Postgres har inte möjlighet att returnera resultatet av gratis SELECT
till klient - DO
-satsen motsvarar inte MS SQL-proceduren.