Как из функции вернуть Record

Привет
Нужно создать функцию на plpgsql что бы возвращала набор данных из связных таблиц в одной строке.
Пробовал создать функцию с типом возвращаемого значения record, но при вызове выдает только пустые значения.
Подскажите где лежат грабли?

Вот сама функция:
CREATE OR REPLACE FUNCTION Car_info(CarID integer) RETURNS record as $$
Declare

res record;
FDriverID integer;
SDriverID integer;

BEGIN

FDriverID = (Select "Driver1" From "Second_Task"."Crew" where "CrewID" = CarID);
SDriverID = (Select "Driver2" From "Second_Task"."Crew" where "CrewID" = CarID);

Select * into res from
(select get_driver_fio(FDriverID) AS FIO1, "Adres" as Driver1A, "PhoneNumber" as Driver1PN
from "Second_Task"."Drivers"
where "DriversID" = FDriverID
) as FDriver,
(select get_driver_fio(SDriverID) AS FIO2, "Adres" as Driver1A, "PhoneNumber" as Driver1PN
from "Second_Task"."Drivers"
where "DriversID" = SDriverID
) as SDriver;
return res;

END;
$$ LANGUAGE plpgsql volatile;

А вот так вызывал
Select * from car_info(14) as (FIO1 text, Driver1A text, Driver1PN text, FIO2 text, Driver2A text, Driver2PN text) ;

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

У тебя вызывается наверное

У тебя вызывается наверное такая ошибка:
ERROR: a COLUMN definition list IS required FOR functions returning "record"
Чтобы функция возвращала набор данных, надо этот набор именовывать по типам. Иначе - никак.
Ты либо из функции вызываешь TABLE(field1 integet...) либо раскидываешь как в своём примере.

ошибка не выдается

ERROR: a COLUMN definition list IS required FOR functions returning "record"
такой ошибки у меня нет.
Запрос выполняется только в результате я получаю строку в которая все столбцы пустые.

Не совсем понял, что ты предлагаешь сделать.
Тип возвращаемого значения на table я пробовал - тогда он даже одной строки не выдает, а в результате выполнения запросы видна только шапка.

Какая-то редкостная ахинея

Какая-то редкостная ахинея написана в функции. Вы можете словами объяснить чего вы хотите добиться? Пример таблиц, что должно выдавать?

Хочу склеить столбцы из двух

Хочу склеить столбцы из двух селектов в одну таблицу,
в итоге должна получится таблица из 6 столбцов

Столбцы из двух селектов в

Столбцы из двух селектов в одну таблицу склеиваются JOIN'ами (по общему столбцу или без него), таблицы с таблицей UNION'ами. Ничего городить для этого не нужно.

забыл добавить, что самое

забыл добавить, что самое главное это, то что все это должно быть в функции, при вызове которой должна выводится итоговая таблица. Так что как склеивать таблицы не важно (но за совет спасибо)

Нашел

Если вдруг кому-то пригодится, то запрос в принципе верный, только команда into res стоит не на своем месте, на поставить после обеих таблиц.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023