sql >> Database teknologi >  >> RDS >> PostgreSQL

Med henvisning til sessionsvariabler (\set var='value') fra PL/PGSQL

Du kan ikke bruge psql-variabler direkte i plpgsql-koden. Symbolerstatningen er blokeret inde i strenge:

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

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

Men du kan indstille en serversessionsvariable og senere til at bruge denne slags variabler i plpgsql-kode (på serversiden):

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

Du kan bruge samme teknik fra kommandolinjen, se:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html

sidste note - koden

BEGIN
  SELECT some;
END;

er ugyldig i plpgsql. Resultater af enhver SELECT s skal gemmes i nogle variabler. Postgres har ikke mulighed for at returnere resultatet af gratis SELECT til klient - DO sætning svarer ikke til MS SQL-proceduren.




  1. Sådan overføres alle MySQL-databaser fra gammel til ny server

  2. Hvad er et brugerdefineret runtime-billede i Java 9?

  3. 12c Adaptive planer

  4. Funktionen MySQL ROUND() – Afrund et tal til et givet antal decimaler