我想得到一个点的M坐标类型,并使用ST_M和ST_line_interpolate_point等方法,我可以通过SQL得到正确的结果。现在我想把它放到pl / pgsql函数中,它总是有错误,请帮忙!谢谢!
select point_to_m1(80,0,0) from testo;
这个函数不存在错误,但是当我使用这个函数时,它有错误。
ERROR: query has no destination for result data HINT: If you want to discard the results of a SELECT, use PERFORM instead.CONTEXT: PL/pgSQL function point_to_m1(double precision,double precision,integer) line 5 at SQL statementter code here
错误是:
Gen<T>
我怎么能解决这个问题?
答案 0 :(得分:0)
问题在于这一行:
select testo.geom from testo where lineid=z;
这是一个标准的select语句,它实际上并没有告诉Postgresql 存储结果在任何变量中 - 或者在Postgresql的话中,没有目的地为了它。
这也意味着在下一行,您尝试使用变量geom
时,它仍然是空的。
试试这个:
select geom INTO geom from testo where lineid=z;
这里,第一个geom
是字段名称,INTO geom
告诉Postgresql将结果存储在您之前声明的变量geom
中。
为清楚起见,您可能希望重命名变量,因为变量名称与字段相同看起来有点令人困惑。
这是参考页面:http://www.postgresql.org/docs/9.2/static/plpgsql-statements.html#PLPGSQL-SELECT-INTO