我正在尝试在EXECUTE上循环到rowcnt。我正在按年份分组,需要为每条记录插入。我成功遍历了For rec,但是每个表仅插入mc_id = 2的1行
RETURNS void
LANGUAGE plpgsql
AS $$
DECLARE
rec RECORD;
rec2 RECORD;
sch text;
tbl text;
fld text;
qry text;
rowcnt RECORD;
BEGIN
FOR rec IN SELECT * FROM AUDIT.AUDIT_METRIC_DEFINITIONS WHERE metric_class_id = mc_id
LOOP
sch = quote_ident(rec.schema_name);
fld = quote_ident(rec.field_name);
tbl = quote_ident(rec.schema_name)||'.'||quote_ident(rec.table_name);
qry := 'select extract(year from '||fld||') as yr, count(*) as cnt from '|| tbl ||' group by 1';
EXECUTE qry into rowcnt;
INSERT INTO AUDIT.AUDIT_METRIC_DATA(metric_id,level,value,run_date) values(rec.metric_id,tbl||'.'||fld||'.'||rowcnt.yr,rowcnt.cnt,current_date);
END LOOP;
END
$$; ```