Digamos que eu tenha uma variável de ambiente de usuário do Windows SOME_STRING.
É possível usar seu valor em uma função PL/pgSQL?
Caso contrário, preciso usar uma linguagem não confiável (como PL/pythonu) ou posso usar uma confiável?
Estou no PG 9.2
Você não pode acessar uma variável de ambiente diretamente; mas você pode acessar uma definição de configuração personalizada e defini-la como um valor do ambiente na inicialização. Por exemplo, você pode passar a seguinte opção de inicialização usando
PGOPTIONS
:Nota: o ponto (
.
) no nome é importante.Em seguida, recupere o valor usando
current_setting
:(Tentei isso no Linux e descobri que está funcionando, deve ser o mesmo para o Windows, mas pode precisar de algumas pequenas modificações para atender a essa plataforma específica.)
Parâmetros personalizados são possíveis desde a versão 8.0 do postgresql com o uso de
custom_variable_classes
(consulte 16.4.12. Opções personalizadas ) Desde a versão 10.0 do postgresql, o uso decustom_variable_classes
não é necessário, mas o nome do parâmetro ainda deve consistir em duas partes, separadas por a.
, primeiro a nome da classe da variável e, em seguida, o nome da variável. O nome da classe deve ser exclusivo em todos os módulos carregados.Para definir uma variável env no nível da sessão:
(db.beta pode ser substituído por qualquer string conforme desejado, mas deve ter ponto(.) entre)
Para usar a variável env em sua consulta:
Para definir a variável env globalmente , coloque a variável no
postgresql.conf
arquivoCUSTOMIZED OPTIONS
como abaixo.