El psql
El analizador no puede ver lo que hay dentro de las cadenas. Esto podría ser lo que quieres:
delete from t
where :para = 1
Hazlo fuera de un bloque anónimo. Si realmente necesita PL/pgSQL
usar una función parametrizada:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
Y su archivo de script tendrá:
select f(:para);
Si no desea agregar permanentemente una función a la base de datos, hágalo todo dentro del script:
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);
Dale a la función un nombre único para que no corras el riesgo de descartar algo más.