sql >> Databáze >  >> RDS >> PostgreSQL

Odkazuje na proměnné relace (\set var='value') z PL/PGSQL

Proměnné psql nemůžete použít přímo v kódu plpgsql. Náhrada symbolů je blokována uvnitř řetězců:

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

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

Ale můžete nastavit proměnné relace serveru a později použít tento druh proměnných v kódu plpgsql (na straně serveru):

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

Stejnou techniku ​​můžete použít z příkazového řádku, viz:http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html

poslední poznámka - kód

BEGIN
  SELECT some;
END;

je neplatný v plpgsql. Výsledky libovolného SELECT s by měly být uloženy v některých proměnných. Postgres nemá možnost vrátit výsledek volného SELECT klientovi - DO není ekvivalentní proceduře MS SQL.




  1. Jak nainstalovat MySQLdb (Knihovna pro přístup k datům Pythonu do MySQL) na Mac OS X?

  2. Tipy pro ladění výkonu PostgreSQL

  3. foreach %dopar% + RPostgreSQL

  4. PDO mysql:Jak zjistit, zda bylo vložení úspěšné