为多个记录匹配条件执行 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;
$$;
我需要 运行 为满足特定条件的大量记录手动执行一个过程。如果我手动包含一个 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;
$$;