sql >> Databasteknik >  >> RDS >> PostgreSQL

Med hänvisning till sessionsvariabler (\set var='value') från PL/PGSQL

Du kan inte använda en psql-variabel i plpgsql-koden direkt. Symbolersättningen är blockerad inuti strängar:

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

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

Men du kan ställa in en serversessionsvariabler och senare att använda den här typen av variabler i plpgsql-kod (på serversidan):

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

Du kan använda samma teknik från kommandoraden, se:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html

sista anteckningen - koden

BEGIN
  SELECT some;
END;

är ogiltig i plpgsql. Resultat av någon SELECT s bör lagras i vissa variabler. Postgres har inte möjlighet att returnera resultatet av gratis SELECT till klient - DO -satsen motsvarar inte MS SQL-proceduren.




  1. Structured Query Language – Vikten av att lära sig SQL

  2. Hur man exporterar tomma tabeller i Oracle

  3. Använda Barman för att säkerhetskopiera PostgreSQL - En översikt

  4. Omfattning av temporära tabeller i SQL Server