Anda tidak dapat menggunakan variabel psql di dalam kode plpgsql secara langsung. Substitusi simbol diblokir di dalam string:
postgres=> select :'xx';
?column?
----------
AHOJ
(1 row)
postgres=> select ' :xx ';
?column?
----------
:xx
(1 row)
Tetapi Anda dapat mengatur variabel sesi server dan kemudian menggunakan variabel semacam ini dalam kode plpgsql (di sisi server):
postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin
raise notice '>>%<<', current_setting('myvars.xx');
end $$;
NOTICE: >>AHOJ<<
DO
Anda dapat menggunakan teknik yang sama dari baris perintah, lihat:http://okbob.blogspot.cz/2015/01/how-to-Push-parameters-to-do-statement.html
catatan terakhir - kode
BEGIN SELECT some; END;
tidak valid di plpgsql. Hasil dari SELECT
s harus disimpan dalam beberapa variabel. Postgres tidak memiliki kemungkinan untuk mengembalikan hasil SELECT
free gratis ke klien - DO
pernyataan tidak setara dengan prosedur MS SQL.