U kunt psql-variabelen niet rechtstreeks in plpgsql-code gebruiken. De symboolvervanging is geblokkeerd binnen strings:
postgres=> select :'xx';
?column?
----------
AHOJ
(1 row)
postgres=> select ' :xx ';
?column?
----------
:xx
(1 row)
Maar u kunt een serversessievariabelen instellen en later om dit soort variabelen in plpgsql-code te gebruiken (aan serverzijde):
postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin
raise notice '>>%<<', current_setting('myvars.xx');
end $$;
NOTICE: >>AHOJ<<
DO
U kunt dezelfde techniek gebruiken vanaf de opdrachtregel, zie:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html
laatste opmerking - de code
BEGIN SELECT some; END;
is ongeldig in plpgsql. Resultaten van een SELECT
s moet in sommige variabelen worden opgeslagen. Postgres heeft geen mogelijkheid om het resultaat van gratis SELECT
. te retourneren naar klant - DO
statement is geen equivalent van de MS SQL-procedure.