Non è possibile utilizzare direttamente una variabile psql all'interno del codice plpgsql. La sostituzione del simbolo è bloccata all'interno delle stringhe:
postgres=> select :'xx';
?column?
----------
AHOJ
(1 row)
postgres=> select ' :xx ';
?column?
----------
:xx
(1 row)
Ma puoi impostare variabili di sessione del server e successivamente utilizzare questo tipo di variabili nel codice plpgsql (lato server):
postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin
raise notice '>>%<<', current_setting('myvars.xx');
end $$;
NOTICE: >>AHOJ<<
DO
Puoi usare la stessa tecnica dalla riga di comando, vedi:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html
ultima nota:il codice
BEGIN SELECT some; END;
non è valido in plpgsql. Risultati di qualsiasi SELECT
s dovrebbe essere memorizzato in alcune variabili. Postgres non ha la possibilità di restituire il risultato di SELECT
gratuito al cliente - DO
non è equivalente alla procedura MS SQL.