对符合条件的多个记录执行PSQL过程



我需要为满足特定条件的大型记录集手动运行一个过程。如果我手动包含一个ID,它可以很好地工作,但由于某种原因,如果我只是告诉它从表中获取一个ID列表,它就不起作用。无错误;但是丢失的数据不会从过程中添加到表中。

据我所知,这应该很好,但事实并非如此:

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,问题不可能是程序,因为尝试这样做失败了任何程序我尝试

请向我解释一下这个函数(fa_sptl_cross(的作用是什么?如果你能写出这个函数的源代码,我就可以对此进行分析。

一般来说,我知道当您使用where id = 312231时,您的查询返回一条记录,这就是为什么您的函数工作良好的原因。因为您的函数有一个输入参数id。在其他方式中,查询返回、许多记录、许多id,所以您的函数不起作用。所以我必须查看这个函数的源代码。我想是的。

我使用PL/pgSQL中提供的信息来执行

我的解决方案如下:

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

相关内容

  • 没有找到相关文章