sql >> Database >  >> RDS >> PostgreSQL

Referentie psql-parameter in anoniem PL/pgSQL-blok

De psql parser kan niet zien wat er in strings zit. Dit is misschien wat je wilt:

delete from t
where :para = 1

Doe het buiten een anoniem blok. Als je PL/pgSQL echt nodig hebt gebruik een geparametriseerde functie:

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

En uw scriptbestand heeft:

select f(:para);

Als je niet permanent een functie aan de db wilt toevoegen, doe het dan allemaal in het 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);

Geef de functie een unieke naam zodat je niet het risico loopt iets anders te laten vallen.




  1. Hebben databases naast Postgres functies die vergelijkbaar zijn met buitenlandse datawrappers?

  2. MySQL:#1075 - Onjuiste tabeldefinitie; autoincrement versus een andere sleutel?

  3. Hoe kan ik kinderen en ouders groeperen in één zoekopdracht?

  4. Specificeer SSL dat moet worden gebruikt voor jdbc in context.xml