我无法使用returns表函数中的多个记录并将其插入另一个表中。我可以调用该函数并返回结果,但不能插入。
``
with rst as (select * from audit.audit_tbl_row_count_by_year(sch,tbl,fld) a)
insert into audit.audit_metric_data(level,value) values(a.yr,a.cnt);
CREATE OR REPLACE FUNCTION audit.audit_tbl_row_count_by_year(sch text, tbl text, fld text)
RETURNS TABLE (
vyr int,
vcnt numeric
)
LANGUAGE plpgsql
AS $$
DECLARE
qry text;
var_r record;
--could not get RETURN QUERY to use parameters
BEGIN
qry := 'select extract(year from '|| fld ||') as yr, count(*) as cnt from '|| sch ||'.'|| tbl ||' group by 1';
FOR var_r IN EXECUTE qry
LOOP
vyr := var_r.yr ;
vcnt := var_r.cnt;
RETURN NEXT;
END LOOP;
END$$;
``
以下代码正在工作
for rec2 in select * from audit.audit_tbl_row_count_by_year(sch,tbl,fld)
loop
insert into audit.audit_metric_data(metric_id,level,value,run_date) values(rec.metric_id,sch|| '.' ||tbl|| '.'||fld|| '.' ||rec2.vyr,rec2.vcnt,current_date);
end loop;
语法为INSERT INTO ... SELECT ...
。你离那远了。您可以尝试:
INSERT INTO audit.audit_metric_data
(level,
value)
SELECT vyr,
vcnt
FROM audit.audit_tbl_row_count_by_year(sch,
tbl,
fld);