psql
parser nie może zobaczyć, co jest w ciągach. To może być to, czego chcesz:
delete from t
where :para = 1
Zrób to poza anonimowym blokiem. Jeśli naprawdę potrzebujesz PL/pgSQL
użyj sparametryzowanej funkcji:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
Twój plik skryptu będzie miał:
select f(:para);
Jeśli nie chcesz na stałe dodawać funkcji do bazy danych, zrób to wszystko w skrypcie:
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);
Nadaj funkcji unikalną nazwę, aby nie ryzykować porzucenia czegoś innego.