PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Parâmetro de referência psql dentro do bloco anônimo PL/pgSQL


O psql analisador não pode ver o que está dentro das strings. Isso pode ser o que você quer:
delete from t
where :para = 1

Faça isso fora de um bloco anônimo. Se você realmente precisa de PL/pgSQL use uma função parametrizada:
create or replace function f(_para integer)
returns void as $$
begin
    if _para = 1 then
        --statements
    end if;
end; $$ language plpgsql;

E seu arquivo de script terá:
select f(:para);

Se você não quiser adicionar uma função permanentemente ao db, faça tudo dentro do 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);

Dê um nome exclusivo à função para não correr o risco de descartar outra coisa.