我需要使用"提醒通知"报告记录项目,但包括项目名称。
raise notice 'rec=%',r; -- is not very good
是否有可能做某些事情:
declare r record; itemname varchar(200); begin select * into r from my_table_unknown_structure; for itemname in pg_record_item_names(r) loop raise notice '%=%,itemname,pg_record_item_value(r,itemname); end loop; end;
答案 0 :(得分:1)
您可以为表格的每一行设置一个JSON对象
select row_to_json(t)
from t;
row_to_json
-----------------------------
{"a":1,"b":"a_value"}
{"a":2,"b":"another_value"}
如果您只需要第一行,并希望将其作为一组键/值对
select *
from json_each ((
select row_to_json(t)
from t
limit 1
))
;
key | value
-----+-----------
a | 1
b | "a_value"
答案 1 :(得分:0)
答案基于CRAIG RINGER的评论,使用“hstore”扩展名。
我想提出他的评论作为答案。
declare r record; h hstore; begin select * into r from more_joined_tables; select * into h from hstore(r); raise notice '%',h; end;
OR
declare r record; h record; begin select * into r from price_list; for h in select * from each(hstore(r)) loop raise notice '%',h; end loop; end;