我正在从命令行运行 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)
但我得到了一个错误,如:
Run Code Online (Sandbox Code Playgroud)syntax error at or near ':'
一旦我从:now_utc变为now(),脚本就很好,它就像一个魅力。
问题是如何将变量从命令行传递给 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的方式是否需要。