sql >> Database teknologi >  >> RDS >> PostgreSQL

Reference psql-parameter inde i PL/pgSQL anonym blok

psql parser kan ikke se, hvad der er inde i strenge. Dette kan være, hvad du ønsker:

delete from t
where :para = 1

Gør det uden for en anonym blok. Hvis du virkelig har brug for PL/pgSQL brug en parametriseret funktion:

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

Og din scriptfil vil have:

select f(:para);

Hvis du ikke vil permanent tilføje en funktion til db'en, skal du gøre det hele inde i scriptet:

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

Giv funktionen et unikt navn, så du ikke risikerer at tabe noget andet.




  1. Valg af flere kolonner/felter i MySQL underforespørgsel

  2. Hvordan sammenligner man strenge i sql ignoring case?

  3. MySQL sammenkæder alle kolonner

  4. MySQL-datokonvertering