sql >> Database >  >> RDS >> PostgreSQL

Verwijzend naar sessievariabelen (\set var='value') uit PL/PGSQL

U kunt psql-variabelen niet rechtstreeks in plpgsql-code gebruiken. De symboolvervanging is geblokkeerd binnen strings:

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

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

Maar u kunt een serversessievariabelen instellen en later om dit soort variabelen in plpgsql-code te gebruiken (aan serverzijde):

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

U kunt dezelfde techniek gebruiken vanaf de opdrachtregel, zie:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html

laatste opmerking - de code

BEGIN
  SELECT some;
END;

is ongeldig in plpgsql. Resultaten van een SELECT s moet in sommige variabelen worden opgeslagen. Postgres heeft geen mogelijkheid om het resultaat van gratis SELECT . te retourneren naar klant - DO statement is geen equivalent van de MS SQL-procedure.




  1. Host 'xxx.xx.xxx.xxx' mag geen verbinding maken met deze MySQL-server

  2. T-sql - bepaal of de waarde een geheel getal is

  3. Hoe de database te controleren op een niet-geroot Android-apparaat?

  4. DATE_ADD() Voorbeelden – MySQL