我有一个简单的函数,它返回给定邮政编码的几何图形:
CREATE FUNCTION public._zip_geom(IN zip VARCHAR)
RETURNS SETOF geometry AS $$
SELECT "the_geom_4326" FROM "shapes"."zip_polys" a WHERE a."zip" = zip
$$ LANGUAGE sql;
我打电话给SELECT public._zip_geom('80302');
。
当返回定义为SETOF geometry
时,我在zip_polys
表中得到所有几何。当我将其更改为geometry
时,我得到一个几何图形,但不是与提供的邮政编码匹配的几何图形。
为什么会这样,我如何编写一个能够返回正确值的函数?
答案 0 :(得分:0)
您的函数参数与列名称(Duh!)冲突,您可以尝试:
CREATE FUNCTION public._zip_geom(IN _omg VARCHAR)
RETURNS SETOF geometry AS $$
SELECT "the_geom_4326" FROM "shapes"."zip_polys" a WHERE a."zip" = _omg
$$ LANGUAGE sql;
_doh
或_zip
中的前缀下划线或多或少是参数的约定;列名不能以下划线开头,因此_omg
无冲突。