psql
parser nevidí, co je uvnitř řetězců. Může to být to, co chcete:
delete from t
where :para = 1
Udělejte to mimo anonymní blok. Pokud opravdu potřebujete PL/pgSQL
použijte parametrizovanou funkci:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
A váš soubor skriptu bude mít:
select f(:para);
Pokud nechcete trvale přidat funkci do db, udělejte to vše uvnitř skriptu:
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);
Dejte funkci jedinečný název, abyste neriskovali, že vypustíte něco jiného.