У меня есть функция postgres под названием site_opened_on_date, которая принимает в качестве входных данных идентификатор и дату.
Подпись функции выглядит так:
CREATE OR REPLACE FUNCTION recntrek.site_opened_on_date(
site_id bigint,
in_date date DEFAULT (
now(
))::date)
RETURNS SETOF "TABLE(date date, opening_time time without time zone, closing_time time without time zone)"
LANGUAGE 'plpgsql'
COST 5.0
STABLE
ROWS 3.0
AS $function$
Я хочу применить эту функцию на 7 дней.
Я пробовал это:
SELECT (
SELECT t FROM site_opened_on_date(100520000101526, _d) t
)FROM unnest(ARRAY[ now(),
now()+ INTERVAL '1 DAY',
now()+ INTERVAL '2 DAY',
now()+ INTERVAL '3 DAY',
now()+ INTERVAL '4 DAY',
now()+ INTERVAL '5 DAY',
now()+ INTERVAL '6 DAY'
]::DATE[]) _d;
Но я получаю следующую ошибку: более одной строки, возвращенной подзапросом, используемым в качестве выражения
Это связано с тем, что функция site_opened_on_date может возвращать более одной строки за дату.
У кого-нибудь есть идея решения? Я бы не стал писать новую функцию postgres, я бы предпочел найти способ применения моего массива к существующей функции в запросе.