PL/PGSQL函数 - 循环通过特定的列,并在循环中执行第二个查询



如您在标题中所看到的,我想循环循环,该列构建构建ID,然后函数将执行第二个查询,该查询使用这些循环值并在PostgreSql中显示Query resuly。

请注意以下代码:

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"变量应声明为"整数"?
  • 我的第二个查询也应该在循环中使用?

预先感谢...

对于这样的琐碎任务,使用简单的SQL函数:

CREATE OR REPLACE FUNCTION get_buildings()
  RETURNS SETOF building AS
'SELECT * FROM building' LANGUAGE sql;

或仅:

SELECT * FROM building;

这是一个实际FOR循环的一个示例从"选择语句"格式中的函数返回结果

另一个带有匿名记录的示例:
在POSTGRES 9.0

中使用PL/PGSQL的桌子上的循环

尝试搜索。还有更多。

最新更新