sql >> Database teknologi >  >> RDS >> PostgreSQL

PSQL kommandolinjeargumenter i DO-script

Fordi PL-blokkene faktisk er tekstkonstanter i koden, erstattes de interne variabler ikke inde i dem på den sædvanlige måde. Heldigvis er det muligt at bruge en sessionsvariable til at dele data mellem forskellige SQL/PL-blokke:

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

For at sikre, at variablen er tildelt, og indstille standardværdien, hvis den ikke er:

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

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



  1. Automatisk plankorrektion i SQL Server

  2. Konvertering af udvalgte resultater til Indsæt script - SQL Server

  3. SqlBulkCopy Indsæt med identitetskolonne

  4. Få databasepatchsets