sql >> Base de Datos >  >> RDS >> PostgreSQL

Argumentos de la línea de comandos de PSQL en el script DO

Debido a que los bloques PL son en realidad constantes de texto en el código, las variables internas no se sustituyen dentro de ellos de la forma habitual. Afortunadamente, es posible usar variables de sesión para compartir datos entre diferentes bloques 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 $$;

Para asegurarse de que la variable esté asignada y establezca el valor predeterminado si no lo está:

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

Más detalles:
https://www.postgresql.org/docs/current/app-psql.html#PSQL-METACOMMAND-IFhttps://www.postgresql.org/docs/current/app-psql.html #APP-PSQL-INTERPOLACIÓN