相关疑难解决方法(0)

如何从命令行将变量传递给 PL/pgSQL 代码?

我正在从命令行运行 psql 脚本,其中的变量类似于:

psql ...... -v now_utc=$NOW_UTC 
Run Code Online (Sandbox Code Playgroud)

然后我想在我的脚本中使用它,例如:

$$
DECLARE
   _now_date timestamp := :now_utc;
BEGIN
  -- do something
END
$$
Run Code Online (Sandbox Code Playgroud)

但我得到了一个错误,如:

syntax error at or near ':'
Run Code Online (Sandbox Code Playgroud)

一旦我从:now_utc变为now(),脚本就很好,它就像一个魅力。

问题是如何将变量从命令行传递给 PL/pgSQL 代码?

postgresql psql plpgsql string-manipulation

5
推荐指数
1
解决办法
2708
查看次数

将 current_setting('the_setting') 的结果赋给 PL/pgSQL 中的一个变量

我有一个函数,我需要获取一个配置参数并将其分配给我稍后将在函数中使用的变量。问题是当配置参数不被识别(因为它还不存在)时,函数就会死亡。我想评估是否可以分配变量,如果不能为其设置空值。

这是我尝试过的:

   DECLARE
      conf_param text;
      num integer;

   BEGIN
      SELECT current_setting('the_setting') INTO conf_param;
         -- here is where dies when the_setting is not recognized!
      IF FOUND THEN
         num := conf_param::integer;
      ELSE
         num := NULL;
      END IF;
      -- more stuff
Run Code Online (Sandbox Code Playgroud)

我不确定我使用Found的方式是否需要。

postgresql parameter plpgsql

4
推荐指数
1
解决办法
3860
查看次数