sql >> Databáze >  >> RDS >> PostgreSQL

Odkaz na parametr psql uvnitř anonymního bloku PL/pgSQL

psql parser nevidí, co je uvnitř řetězců. Může to být to, co chcete:

delete from t
where :para = 1

Udělejte to mimo anonymní blok. Pokud opravdu potřebujete PL/pgSQL použijte parametrizovanou funkci:

create or replace function f(_para integer)
returns void as $$
begin
    if _para = 1 then
        --statements
    end if;
end; $$ language plpgsql;

A váš soubor skriptu bude mít:

select f(:para);

Pokud nechcete trvale přidat funkci do db, udělejte to vše uvnitř skriptu:

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);

Dejte funkci jedinečný název, abyste neriskovali, že vypustíte něco jiného.




  1. Spojení dat z 5 tabulek bez duplicitních hodnot a získání výsledku s vlastním stavem v Oracle 10g

  2. Vícenásobné OR klauzule v MySQL

  3. Odstraňuje MySQL běžné podvýrazy mezi klauzulemi SELECT a HAVING/GROUP BY

  4. Převeďte časové razítko/datum čas z UTC na EST Oracle SQL