我需要从动态表中访问动态字段,我有这个代码来执行此操作
这里f_field动态地从t_table中获取列的名称。
当t_table被声明为记录时,此代码会出错。但是当声明为静态列fieldType时,它会按预期运行。
问题是,我如何声明t_row以使此代码正常运行,或者如何通过其他方式实现相同目的。请记住,t_table和f_field是动态的,因此它们的值会发生变化。
FOR t_row IN EXECUTE 'SELECT * from ' || t_table loop
EXECUTE format('select $1.%I', f_field) USING t_row into f;
RAISE notice '%', f;
END LOOP;
答案 0 :(得分:0)
当我进行研究时,我发现像EXECUTE这样的句子并不理解记录结构,这是通过试验plpgsql,因为没有关于此的文档。所以我需要将t_row转换为另一种具有从动态字段中提取值的方法的对象,我选择json因为我觉得它很容易使用。这是我的代码。
FOR t_row IN EXECUTE 'SELECT * from dd.a' loop
f_json := row_to_json(layer_row);
f := json_extract_path(f_json, f_field);
RAISE notice '%', f;
END LOOP;
这对我来说很好,但这只是一个小问题,如果有人可以指出为什么我的第一个代码不起作用我会贬低它。提前致谢