多循环和/或迭代

时间:2019-11-18 23:36:59

标签: 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 * 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
$$; ```

0 个答案:

没有答案
相关问题