De psql
parser kan niet zien wat er in strings zit. Dit is misschien wat je wilt:
delete from t
where :para = 1
Doe het buiten een anoniem blok. Als je PL/pgSQL
echt nodig hebt gebruik een geparametriseerde functie:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
En uw scriptbestand heeft:
select f(:para);
Als je niet permanent een functie aan de db wilt toevoegen, doe het dan allemaal in het 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);
Geef de functie een unieke naam zodat je niet het risico loopt iets anders te laten vallen.