Учитывая простой PL/PgSQL функция: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
, определяя его как строку rowtype, record и even table, но я всегда получаю кортеж или массив, как указано в примере. Любые подсказки относительно того, как получить результат способом, подобным таблице?
Это работает как задумано! Большое вам спасибо за ваш быстрый ответ. –
@AaronRivacoba Если это правильный ответ, вы должны его принять. – Bill