psql
parser kan ikke se, hvad der er inde i strenge. Dette kan være, hvad du ønsker:
delete from t
where :para = 1
Gør det uden for en anonym blok. Hvis du virkelig har brug for PL/pgSQL
brug en parametriseret funktion:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
Og din scriptfil vil have:
select f(:para);
Hvis du ikke vil permanent tilføje en funktion til db'en, skal du gøre det hele inde i scriptet:
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);
Giv funktionen et unikt navn, så du ikke risikerer at tabe noget andet.