Loops 多循环和/或迭代

Loops 多循环和/或迭代,loops,sql-insert,plpgsql,Loops,Sql Insert,Plpgsql,我正在尝试将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

我正在尝试将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
$$; ```

表现出的行为与您想要实现的行为有何不同?我能够循环查看rec记录集。但是,对于我查询的每个表,我希望插入年份和记录计数。正如现在所写的,每个表只插入一条来自rowcnt的记录,而不是每个表每年插入一条记录。我需要一个额外的循环来插入rowcnt中按年份分组的每条记录。希望有意义