psql
parser tidak dapat melihat apa yang ada di dalam string. Ini mungkin yang Anda inginkan:
delete from t
where :para = 1
Lakukan di luar blok anonim. Jika Anda benar-benar membutuhkan PL/pgSQL
gunakan fungsi berparameter:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
Dan file skrip Anda akan memiliki:
select f(:para);
Jika Anda tidak ingin menambahkan fungsi secara permanen ke db, lakukan semuanya di dalam skrip:
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);
Beri nama fungsi yang unik agar Anda tidak mengambil risiko menjatuhkan sesuatu yang lain.