为多个记录匹配条件执行 PSQL 过程

Execute PSQL procedure for multiple records matching criteria

我需要 运行 为满足特定条件的大量记录手动执行一个过程。如果我手动包含一个 ID,它工作正常,但出于某种原因,如果我只是告诉它从 table 中获取一个 ID 列表,它就不起作用。没有错误;但是丢失的数据不会从过程中添加到 table。

据我了解,这应该可以正常工作,但它没有:

select fa_sptl_cross(id, geom) from focus_area where generation_id = 3;

但这很好用

select fa_sptl_cross(id, geom) from focus_area where id = 312231;

即使这样也应该有效,不是吗?

select fa_sptl_cross(id, geom) from focus_area

想法?

AFAIK,这不可能是问题所在,因为尝试使用 any 过程失败,我尝试

请解释一下这个函数 (fa_sptl_cross) 的作用是什么?如果你能把这个函数的源代码写出来我就可以分析了。

一般来说,我知道当您使用 where id = 312231 您的查询 return 一条记录时,这就是您的函数运行良好的原因。因为你的函数有一个输入参数id。以其他方式查询 return,很多记录,很多 id,所以你的函数不起作用。所以我必须查看这个函数的源代码。我觉得是。

我使用

中提供的信息让它工作

我的解决方法如下:

DO $$
    BEGIN
      PERFORM habits4.fav_sptl_cross(focus_area_id, geom) from habits4.focus_area_version where generation_id = 3;
    END;
$$;