PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Referencyjny parametr psql wewnątrz anonimowego bloku PL/pgSQL

psql parser nie może zobaczyć, co jest w ciągach. To może być to, czego chcesz:

delete from t
where :para = 1

Zrób to poza anonimowym blokiem. Jeśli naprawdę potrzebujesz PL/pgSQL użyj sparametryzowanej funkcji:

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

Twój plik skryptu będzie miał:

select f(:para);

Jeśli nie chcesz na stałe dodawać funkcji do bazy danych, zrób to wszystko w skrypcie:

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

Nadaj funkcji unikalną nazwę, aby nie ryzykować porzucenia czegoś innego.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować wiele serwerów PostgreSQL w systemie RedHat Linux?

  2. Wyłączyć DELETE w tabeli w PostgreSQL?

  3. Jak działa funkcja Ln() w PostgreSQL

  4. Jak zmienić pole identyfikatora automatycznego numerowania na typ seryjny w PostgreSQL?

  5. Jak obracać logi PgBouncera w systemie Linux/Windows?