psql
анализаторът не може да види какво има вътре в низовете. Това може да е това, което искате:
delete from t
where :para = 1
Направете го извън анонимен блок. Ако наистина имате нужда от PL/pgSQL
използвайте параметризирана функция:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
И вашият скрипт файл ще има:
select f(:para);
Ако не искате да добавите функция за постоянно към db, направете всичко вътре в скрипта:
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);
Дайте на функцията уникално име, за да не рискувате да изпуснете нещо друго.