sql >> Databasteknik >  >> RDS >> PostgreSQL

PSQL kommandoradsargument i DO-skript

Eftersom PL-blocken faktiskt är textkonstanter i koden ersätts inte de interna variablerna inuti dem på vanligt sätt. Lyckligtvis är det möjligt att använda en sessionsvariabel för att dela data mellan olika SQL/PL-block:

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 $$;

För att säkerställa att variabeln tilldelas och ställ in standardvärdet om det inte är:

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

Mer information:
https://www.postgresql.org/docs/current/app-psql.html#PSQL-METACOMMAND-IFhttps://www.postgresql.org/docs/current/app-psql.html #APP-PSQL-INTERPOLATION



  1. Trunkera alla tabeller i en MySQL-databas med ett kommando?

  2. PostgreSQL-fel:Fatalt:rollen användarnamn finns inte

  3. SQL-frågor

  4. Anslut med tidigare motsvarighet för MySQL