postgresql 动态变量参考
postgresql dynamic variable reference
我正在尝试编写一个函数,该函数 return 动态选择变量值,如下所示。
create function get_constval(constname text)
returns text
language plpgsql
as
$$
declare
alpha varchar(100):= 'This is alpha value';
beta varchar(100):= 'This is beta value';
constval varchar(100);
begin
constval:=constname;
return constval;
end;
$$
当我运行代码
select get_constval('alpha') 它 return 是 'alpha' 而不是 'This is alpha value'
有没有办法动态评估变量和 return 值?
谢谢,
NSR
据我所知,这是不可能的。
你可以用 jsonb
做类似的事情:
DO
$$DECLARE
vars jsonb := '{ "alpha": "This is alpha value", "beta": "This is beta value" }';
constval text;
constname text := 'alpha';
BEGIN
EXECUTE 'SELECT ()->>' INTO constval
USING vars, constname;
RAISE NOTICE 'constval = ''%''', constval;
END;$$;
NOTICE: constval = 'This is alpha value'
DO
我正在尝试编写一个函数,该函数 return 动态选择变量值,如下所示。
create function get_constval(constname text)
returns text
language plpgsql
as
$$
declare
alpha varchar(100):= 'This is alpha value';
beta varchar(100):= 'This is beta value';
constval varchar(100);
begin
constval:=constname;
return constval;
end;
$$
当我运行代码 select get_constval('alpha') 它 return 是 'alpha' 而不是 'This is alpha value' 有没有办法动态评估变量和 return 值?
谢谢, NSR
据我所知,这是不可能的。
你可以用 jsonb
做类似的事情:
DO
$$DECLARE
vars jsonb := '{ "alpha": "This is alpha value", "beta": "This is beta value" }';
constval text;
constname text := 'alpha';
BEGIN
EXECUTE 'SELECT ()->>' INTO constval
USING vars, constname;
RAISE NOTICE 'constval = ''%''', constval;
END;$$;
NOTICE: constval = 'This is alpha value'
DO