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

Позовавайки се на променливи на сесията (\set var='value') от PL/PGSQL

Не можете да използвате директно psql променливи в plpgsql код. Заместването на символа е блокирано вътре в низовете:

postgres=> select :'xx';
 ?column? 
----------
 AHOJ
(1 row)

postgres=> select ' :xx ';
?column? 
----------
 :xx 
(1 row)

Но можете да зададете променливи за сесия на сървъра и по-късно да използвате този вид променливи в plpgsql код (от страна на сървъра):

postgres=> set myvars.xx = :'xx';
SET
postgres=> do $$ begin 
                   raise notice '>>%<<', current_setting('myvars.xx');
                 end $$;
NOTICE:  >>AHOJ<<
DO

Можете да използвате същата техника от командния ред, вижте:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html

последна бележка - кодът

BEGIN
  SELECT some;
END;

е невалиден в plpgsql. Резултати от всеки SELECT s трябва да се съхранява в някои променливи. Postgres няма възможност да връща резултат от безплатен SELECT към клиента - DO изразът не е еквивалентен на MS SQL процедура.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се свърже с локалния PostgreSQL

  2. Вземете серийна стойност по подразбиране след INSERT в PL/pgSQL

  3. Ново в PostgreSQL 12:Генерирани колони

  4. Как да сравните производителността на PostgreSQL с помощта на Sysbench

  5. Как да създадете потребител само за четене в PostgreSQL