【发布时间】:2018-03-24 00:36:49
【问题描述】:
我正在寻找多边形内的所有点。该查询对我有用,但是当我将它们添加到函数 plggsql 时出现错误。
查询成功
SELECT id, the_geom
FROM vialidad
WHERE ST_Contains('POLYGON((-99.1981315612793 19.357945,-99.1981315612793 19.376003,-99.161634 19.376003,-99.161634 19.357945,-99.1981315612793 19.357945))', ST_AsText(the_geom));
当我将查询添加到函数 plpgsql 并且创建的多边形位于多边形变量中时。
EXECUTE 'SELECT id,the_geom FROM vialidad WHERE ST_Contains('||polygon||',ST_AsText(vialidad_cdmx_vertices_pgr.the_geom));'
INTO nodes
USING polygon;
控制台错误
QUERY: SELECT id, the_geom FROM vialidad WHERE ST_Contains(POLYGON((-99.1981315612793 19.357945,-99.1981315612793 19.376003,-99.161634 19.376003,-99.161634 19.357945,-99.1981315612793 19.357945)),ST_AsText(the_geom));
CONTEXT:PL/pgSQL 函数 get_nodes_between_two_lines(integer,integer) 执行时第 37 行 ********** 错误**********
错误:“19.357945”或附近的语法错误 SQL 状态:42601
非常感谢您提供任何可能的帮助。
【问题讨论】:
-
你试过在单引号之间传递变量
polygon吗?EXECUTE 'SELECT id,the_geom FROM vialidad WHERE ST_Contains('||quote_literal(polygon)||', ...:假设polygon是 WKT 文字。
标签: sql postgis postgresql-9.4