我有一个Postgresql PL / pgSQL函数,它有一个双嵌套FOR循环,我想动态设置列名。但是我找不到以编程方式访问RECORD列的方法。
我将直接跳到一些代码示例:
FOR loop_helper1 IN SELECT
id, name1, name2, name3, nameN,
FROM table1
LOOP
FOR loop_helper2 IN SELECT name FROM table2 LOOP
-- I want to set values of columns in loop_helper1,
-- with the column name given by loop_helper2.name
-- An EXECUTE would not allow me to do this:
EXECUTE 'loop_helper1.' || loop_helper2.name || ':= function_call(123);'
-- (Eg. 'loop_helper1.name2 := function_call(123);')
-- However, this produces: ERROR: syntax error at or near "loop_helper1"
END LOOP;
END LOOP;
有什么想法吗?
肯定有办法做到这一点,但我似乎无法找到它。所有的帮助和建议表示赞赏。感谢。
答案 0 :(得分:1)
我想你可能想要我们在this related question下设计的功能 使用此函数,您的代码片段可能如下所示:
FOR loop_helper1 IN
SELECT id, name1, name2, name3, nameN,
FROM table1
LOOP
FOR loop_helper2 IN
SELECT name
FROM table2
LOOP
loop_helper1 := public.setfield (loop_helper1
,loop_helper2.name
,function_call(123));
END LOOP;
END LOOP;
可能有更简单的方法,特别是如果你想分配一个完整的复合类型......