psql
trình phân tích cú pháp không thể nhìn thấy những gì bên trong chuỗi. Đây có thể là những gì bạn muốn:
delete from t
where :para = 1
Làm điều đó bên ngoài một khối ẩn danh. Nếu bạn thực sự cần PL/pgSQL
sử dụng một hàm được tham số hóa:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
Và tệp script của bạn sẽ có:
select f(:para);
Nếu bạn không muốn thêm vĩnh viễn một hàm vào db, hãy làm tất cả bên trong 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);
Đặt tên duy nhất cho hàm để bạn không gặp rủi ro bỏ sót thứ khác.