Die psql
Parser kann nicht sehen, was sich in Strings befindet. Dies könnte das sein, was Sie wollen:
delete from t
where :para = 1
Tun Sie es außerhalb eines anonymen Blocks. Wenn Sie PL/pgSQL
wirklich brauchen Verwenden Sie eine parametrisierte Funktion:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
Und Ihre Skriptdatei hat:
select f(:para);
Wenn Sie der Datenbank nicht dauerhaft eine Funktion hinzufügen möchten, tun Sie dies alles innerhalb des Skripts:
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);
Geben Sie der Funktion einen eindeutigen Namen, damit Sie nicht Gefahr laufen, etwas anderes zu löschen.