postgreSQL如何为表的每个tupple运行一个函数?

时间:2015-05-24 17:52:32

标签: sql postgresql

我有一个包含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; 

1 个答案:

答案 0 :(得分:3)

在Postgres 9.3及更高版本中,您可以使用LATERAL关键字(描述为here):

select u.*
from temp3 t,
     lateral u_flight2(t.fid) u;