PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Референтен psql параметър в анонимния блок на PL/pgSQL

psql анализаторът не може да види какво има вътре в низовете. Това може да е това, което искате:

delete from t
where :para = 1

Направете го извън анонимен блок. Ако наистина имате нужда от PL/pgSQL използвайте параметризирана функция:

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

И вашият скрипт файл ще има:

select f(:para);

Ако не искате да добавите функция за постоянно към db, направете всичко вътре в скрипта:

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

Дайте на функцията уникално име, за да не рискувате да изпуснете нещо друго.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Моля, препоръчайте най-добрата опция за групово изтриване

  2. PostgreSQL:count() или поддържане на брояч?

  3. Изчислете максималния брой едновременни потребителски сесии

  4. DBConcurrency изключение, възникнало при актуализиране с помощта на Dataadapter

  5. Как да създадете ограничение за изключване с диапазон от дати с помощта на sqlalchemy