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

Odwoływanie się do zmiennych sesji (\set var='value') z PL/PGSQL

Nie możesz używać zmiennych psql bezpośrednio w kodzie plpgsql. Podstawianie symboli jest blokowane wewnątrz ciągów:

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

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

Ale możesz ustawić zmienne sesji serwera, a później używać tego rodzaju zmiennych w kodzie plpgsql (po stronie serwera):

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

Możesz użyć tej samej techniki z wiersza poleceń, zobacz:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html

ostatnia uwaga - kod

BEGIN
  SELECT some;
END;

jest nieprawidłowy w plpgsql. Wyniki dowolnego SELECT s powinny być przechowywane w niektórych zmiennych. Postgres nie ma możliwości zwrócenia wyniku bezpłatnego SELECT do klienta - DO instrukcja nie jest odpowiednikiem procedury 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. Najlepsze praktyki replikacji PostgreSQL — część 1

  2. Czy używanie tablic w bazie danych to zły projekt?

  3. Postgres kolumna X nie istnieje

  4. Rownum w postgresql

  5. Jak zaimplementować relację wiele-do-wielu w PostgreSQL?