Учитывая простую функцию pl/pgsql:
CREATE OR REPLACE FUNCTION foo (point geometry
, OUT _street text
, OUT _gid int
, OUT distance real)
AS $$
BEGIN
SELECT min(distance(point,geom)) as dist, gid, name into distance, _gid, _street
from streets
where geometria && Expand(point,0.001) group by gid, name order by dist limit 1;
END;
$$ LANGUAGE plpgsql;
получается что-то вроде:
geobase=# select foo(GeomFromText('POINT(-99.124191496999 19.3490666368031)',4326));
foo
-------------------------------------------------
("PASEO DE LOS FRAMBOYANES",345483,0.000118338)
Что хорошо, за исключением того факта, что я ожидал чего-то более похожего на это:
_street | _gid | distance
--------------------------+--------+-------------
PASEO DE LOS FRAMBOYANES | 345483 | 0.000118338
Я пробовал варианты с предложением RETURN
, определяя его как тип строки, запись и даже таблицу, но всегда получаю кортеж или массив, как показано в примере. Любые подсказки относительно того, как получить результат, похожий на таблицу?