我有一个包含5个不同tupples的表,我想为每一行调用一个函数。我尝试使用for循环,但代码有问题。 首先,我想用每行的fid(第一列temp)调用该函数 此外,我在注释中返回下一个r,因为我收到错误:无法在非SETOF函数中使用RETURN NEXT。 我的函数返回void
CREATE TABLE temp3(fid numeric,des numeric,distribution numeric,code numeric,price real,fprogr numeric ,datef date);
insert into temp3(fid,des,distribution,code,price,fprogr,datef)
SELECT id,dest, count(*),fc,price,progr,fdate
FROM tableA;
FOR r IN SELECT * FROM temp3
WHERE temp3.fid > 0
LOOP
select * from u_flight2(fid);
-- RETURN NEXT r; -- return current row of SELECT
END LOOP;
答案 0 :(得分:3)
在Postgres 9.3及更高版本中,您可以使用LATERAL
关键字(描述为here):
select u.*
from temp3 t,
lateral u_flight2(t.fid) u;