如何在 Postgres 函数中使用环境变量?

Nei*_*gan 8 postgresql plpgsql environment-variables

假设我有一个 Windows 用户环境变量 SOME_STRING。

是否可以在 PL/pgSQL 函数中使用它的值?

如果没有,我是否需要使用不受信任的语言(如 PL/pythonu),或者我可以使用受信任的语言吗?

我在 PG 9.2

Cor*_*rin 9

您不能直接访问环境变量;但是您可以访问自定义配置设置并将其设置为启动时环境中的值。例如,您可以使用PGOPTIONS以下方法传递以下启动选项:

PGOPTIONS="-c 'custom.some_string=${SOME_STRING}'"
Run Code Online (Sandbox Code Playgroud)

注意:名称中的点 ( .) 很重要。

然后使用current_setting以下方法检索值:

SELECT current_setting('custom.some_string');
Run Code Online (Sandbox Code Playgroud)

(我已经在 Linux 上尝试过这个,发现它可以工作,对于 Windows 应该是一样的,但可能需要一些轻微的修改来迎合那个特定的平台。)

  • 在 14 中我无法做到这一点,但我可以使用 `psql -v variable_name=“$ENV_VARIABLE”` 来分配变量,然后在脚本中将其用作 `:variable_name`。 (2认同)