正如您在标题中看到的,我想循环遍历包含构建ID的特定列,然后函数将执行第二个查询,该查询使用这些循环值并在PostgreSQL中显示查询结果。
请注意以下代码:
CREATE OR REPLACE FUNCTION getBID() RETURNS SETOF building AS
$BODY$
DECLARE
r building%ROWTYPE;
BEGIN
FOR r IN EXECUTE 'SELECT point_id FROM building'
LOOP
RETURN QUERY EXECUTE 'SELECT gid, nof, year
FROM building
WHERE point_id = ' || r;
END LOOP;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql' ;
SELECT * FROM getBID();
我的建筑ID是整数值。我想知道以下两个方面:
提前致谢...
答案 0 :(得分:3)
对于像这样的琐碎任务,请使用simple SQL function代替:
CREATE OR REPLACE FUNCTION get_buildings()
RETURNS SETOF building AS
'SELECT * FROM building' LANGUAGE sql;
或者只是:
SELECT * FROM building;
以下是填充plpgsql中单个列的实际FOR
loop的一个示例:
Returning results from a function in 'select statement' format
匿名记录的另一个例子:
Loop on tables with PL/pgSQL in Postgres 9.0+
Try a search.还有更多。