1
我有一个Postgresql PL/pgSQL函数,它具有双重嵌套的FOR循环,我想在其中动态设置列名称。但是我找不到以编程方式访问RECORD列的方式。动态更改PL/pgSQL 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;
任何想法?
当然,有一种方法可以做到这一点,但我似乎无法找到它。所有的帮助和建议表示赞赏。谢谢。
谢谢!有趣的阅读。 – ptrn 2012-07-20 19:19:04
对于新读者来说:使用'hstore'扩展(PG 9.0)或使用PG 9.3/9.4附带的新内置'json'函数,可以更简单快速地完成此操作。新的解决方案(和基准)被添加到@Erwin的问题链接到:http://stackoverflow.com/a/28673097/1914376 – 2015-03-15 16:18:55