【发布时间】:2019-01-29 13:30:40
【问题描述】:
我创建了一个带有 varchar 参数的 pl/pgsql 函数。在此函数中,我尝试将运行时参数设置为函数参数的值。
CREATE FUNCTION test_function (param VARCHAR)
RETURNS VOID AS $tf$
BEGIN
SET choice.p = param;
RAISE NOTICE '%', current_setting('choice.p');
END; $tf$ LANGUAGE plpgsql;
但是,打印的值是“param”。 param 被视为字符串而不是参数名称。为什么会这样,我怎样才能实现我的目标?
【问题讨论】:
-
您是否知道已经有一个功能可以做到这一点? set_config()
-
不,我不知道。它现在正在工作!我把线路改成了
PERFORM set_config('choice.p', param, false);但是,我还是不太明白之前发生了什么。 -
SET语法允许不带引号的值(例如SET fsync = on),看起来这就是它对param的解释方式
标签: sql postgresql plpgsql