plpgsqlコード内でpsql変数を直接使用することはできません。記号の置換は文字列内でブロックされます:
postgres=> select :'xx';
?column?
----------
AHOJ
(1 row)
postgres=> select ' :xx ';
?column?
----------
:xx
(1 row)
ただし、サーバーセッション変数を設定して、後でこの種の変数をplpgsqlコード(サーバー側)で使用することができます。
postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin
raise notice '>>%<<', current_setting('myvars.xx');
end $$;
NOTICE: >>AHOJ<<
DO
コマンドラインから同じ手法を使用できます。http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html
を参照してください。最後の注意-コード
BEGIN SELECT some; END;
plpgsqlでは無効です。 SELECT
の結果 sはいくつかの変数に格納する必要があります。 Postgresは無料のSELECT
の結果を返す可能性はありません クライアントへ-DO
ステートメントはMSSQLプロシージャと同等ではありません。