如何在不知道名字的情况下访问postgresql中记录类型的字段?

时间:2022-11-20 22:59:16

I'm programming a PL/pgSQL function with this:

我用这个编程PL / pgSQL函数:

cols_to_select := according to a set of rules, we get the name of the columns

FOR I IN EXECUTE 'SELECT '||cols_to_select||' FROM tabl' LOOP
  -- how to access to fields of record I without knowing their names?
  -- 

END LOOP;

1 个解决方案

#1


This is one way I figured out:

这是我弄清楚的一种方式:

cols_to_select := according to a set of rules, we get the name of the columns

FOR I IN EXECUTE 'SELECT ARRAY['||cols_to_select||'] as AR FROM tabl' LOOP
  -- how to access to fields of record I without knowing their names?
  FOR j IN 1..array_upper(I.ar,1) LOOP
    RAISE NOTICE '%', I.AR[j];
  END LOOP;

END LOOP;

The problem with this solution is that fails when the columns have different types.

此解决方案的问题是当列具有不同类型时失败。

#1


This is one way I figured out:

这是我弄清楚的一种方式:

cols_to_select := according to a set of rules, we get the name of the columns

FOR I IN EXECUTE 'SELECT ARRAY['||cols_to_select||'] as AR FROM tabl' LOOP
  -- how to access to fields of record I without knowing their names?
  FOR j IN 1..array_upper(I.ar,1) LOOP
    RAISE NOTICE '%', I.AR[j];
  END LOOP;

END LOOP;

The problem with this solution is that fails when the columns have different types.

此解决方案的问题是当列具有不同类型时失败。