大家好,我想创建一个动态表查询,以便在运行时进行更新。我有两个postgis表,一个包含点-tablename(records),另一个包含多边形-tablename(OpDMA)。此选择查询:
Create table Op_DMAConn as
SELECT pol.id as polygon_id, poi.id as point_id
FROM "OpDMA" pol
LEFT JOIN records poi ON (ST_Intersects(poi.geom, pol.geom))
返回点的polygon_id多边形和point_id。我希望此查询在运行时执行!
答案 0 :(得分:1)
我认为您正在寻找的是“ EXECUTE”语句。 https://www.postgresql.org/docs/current/sql-execute.html
例如,您可以这样做:
CREATE OR REPLACE FUNCTION public.fn_pointer(points_table_name varchar, polygon_table_name varchar)
returns table(polygon_id int, point_id int)
LANGUAGE plpgsql AS
$$
declare
final_query varchar;
begin
query := 'SELECT ST_Contains(polygon.geom, point.geom)
FROM public."'||points_table_name||'" point, public."'||polygon_table_name||'" polygon;'
-- do what you have to do to make your query return you correct table
return query execute final_query;
end
$$
;
select fn_pointer('table_name_1','table_name_2');
希望这会有所帮助。