【发布时间】:2014-03-09 14:16:13
【问题描述】:
正如您在标题中看到的,我想遍历保存建筑物 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 是整数值。我想知道以下两个方面:
- “r”变量应该声明为“整数”?
- 我的第二个查询也应该循环使用?
提前谢谢...
【问题讨论】:
-
你的循环没有任何意义。两个查询都从同一个表返回数据,因此您可以简单地删除第一个。并且整个函数可以用单个
return query select gid, nof, year from building替换。不再需要缓慢而繁琐的光标
标签: postgresql for-loop plpgsql