Как выбрать несколько значений из функции в отдельные столбцы?

Вот такой у меня запрос

SELECT
    *
FROM (
    SELECT 
        getlatlng("geom")
    FROM
        mytable
) AS subquery;

который возвращает

(-121.9,36.4)
(-117.1,32.9)
(-121.9,36.5)
(-71.2,42.6)

я бы хотел написать

SELECT
    subquery.lat, subquery.lon 
FROM (
    SELECT 
        getlatlng("mygeom")
    FROM
        mytable
) AS subquery;

и вернуть его

lat  | lon
-------------
36.4 | -121.9
32.9 | -117.1
36.5 | -121.9
42.6 | -71.2

Вот соответствующие биты функции.

CREATE OR REPLACE FUNCTION getlatlng(geom geometry, OUT longitude text, OUT latitude text)
 RETURNS record
 LANGUAGE sql
 IMMUTABLE
AS $function$
SELECT ...;
$function$

person John    schedule 03.04.2019    source источник
comment
Есть ли в Postgresql концепция возврата таблицы?   -  person Jacob H    schedule 04.04.2019
comment
@JacobH Думаю, да, я все еще немного новичок в Postgres, так что отнеситесь к этому с недоверием. Также я должен был упомянуть, что не могу изменить функцию, так как она используется во множестве других мест в кодовой базе.   -  person John    schedule 04.04.2019


Ответы (1)


Пытаться:

SELECT (p).longitude, (p).latitude FROM (
    SELECT getlatlng("mygeom") p 
      FROM mytable
) subquery

Параметры OUT функции определяют столбцы возвращаемой записи.

Пример скрипта.

person MarcinJ    schedule 03.04.2019
comment
Отредактировано с правильным ответом, извините за путаницу! - person MarcinJ; 04.04.2019
comment
@LaurenzAlbe О, простите, вы пробовали? Нет? Тогда, возможно, не минусуйте. OUT параметры функции служат определением столбцов записи. Вот, посмотрите сами. - person MarcinJ; 04.04.2019
comment
Я не видел параметры OUT. Извиняюсь, моя ошибка. - person Laurenz Albe; 04.04.2019