PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Аргументи на командния ред на PSQL в DO скрипт

Тъй като PL блоковете всъщност са текстови константи в кода, вътрешните променливи не се заменят вътре в тях по обичайния начин. За щастие е възможно да се използват променливи на сесията за споделяне на данни между различни SQL/PL блокове:

set foo.bar to :v1; -- Name should contains the dot, don't ask me why 
show foo.bar; -- Check that the value was assigned 
do $$
declare
  myvar text := current_setting('foo.bar');
begin
  raise info '%', myvar; -- Output variable value
end $$;

За да сте сигурни, че променливата е присвоена и задайте стойността по подразбиране, ако не е:

\if :{?v1}
  set foo.bar to :v1;
\else
  set foo.bar to 'default';
\endif

Повече подробности:
https://www.postgresql.org/docs/current/app-psql.html#PSQL-METACOMMAND-IFhttps://www.postgresql.org/docs/current/app-psql.html #APP-PSQL-INTERPOLATION



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Производителност на базирано на PostgreSQL приложение:латентност и скрити забавяния

  2. Rails:Разгръщане в Heroku, много проблеми

  3. Грешка в PostgreSQL:Връзката вече съществува

  4. Как да използвам повторно резултат за клаузите SELECT, WHERE и ORDER BY?

  5. Postgresql генерира_серия от месеци