У меня есть простая функция, которая возвращает геометрию для данного почтового индекса:функция Postgres возвращает неожиданный набор
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
, я получаю одну геометрию, но не геометрию, которая соответствует предоставленному почтовому индексу.
Почему это и как написать функцию, которая вернет правильное значение?
Переименуйте аргумент функции на то, что не является 'zip', например' CREATE FUNCTION public._zip_geom (IN _zip VARCHAR) '...' SELECT "the_geom_4326" FROM "shape". "Zip_polys" a WHERE a. " zip "= _zip' – wildplasser