psql
パーサーは文字列の中に何があるかを見ることができません。これはあなたが望むものかもしれません:
delete from t
where :para = 1
匿名ブロックの外でそれを行います。本当にPL/pgSQL
が必要な場合 パラメータ化された関数を使用する:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
また、スクリプトファイルには次のものが含まれます。
select f(:para);
データベースに関数を永続的に追加したくない場合は、スクリプト内ですべて実行してください。
drop function if exists f_iu7YttW(integer);
create or replace function f_iu7YttW(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
select f_iu7YttW(:para);
drop function f_iu7YttW(integer);
関数に一意の名前を付けて、他のものを落とすリスクを冒さないようにします。