Функция PostgreSQL Возвращаем таблицу - PullRequest
0 голосов
/ 21 мая 2018

Я хочу установить функцию на PostgreSQL, которая возвращает таблицу.Это исходный код функции:

   CREATE OR REPLACE FUNCTION feiertag(inDate Date) 
     RETURNS TABLE (eingabeDatum DATE, f_heute INT, f_1 INT, f_2 INT, f_3 INT, f_5 INT) 
    AS $$
            DECLARE
              f_heute integer := 0;
              f_1 integer := 0;
              f_2 integer := 0;
              f_3 integer := 0;
              f_5 integer := 0;
            BEGIN
                    SELECT 1 INTO f_heute FROM feiertage where datum = inDate;
                    SELECT 1 INTO f_1 FROM feiertage where datum = (inDate + interval '1' day);
                    SELECT 1 INTO f_2 FROM feiertage where datum = (inDate + interval '2' day);
                    SELECT 1 INTO f_3 FROM feiertage where datum = (inDate + interval '3' day);
                    SELECT 1 INTO f_5 FROM feiertage where datum = (inDate + interval '5' day);

   RETURN QUERY SELECT inDate as eingabeDatum, coalesce(f_heute, 0) as f_heute, coalesce(f_1,0) as f_1, coalesce(f_2,0) as f_2, coalesce(f_3,0) as f_3, coalesce(f_5,0) as f_5 ;
            END;
    $$ LANGUAGE plpgsql;

Вызов функции возвращает только один столбец с разделенными значениями ',':

psql (9.5.12)
Type "help" for help.

tarec=> select feiertag('2017-01-01');
        feiertag        
------------------------
 (2017-01-01,1,0,0,0,0)
(1 row)

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

Спасибо Тимо

1 Ответ

0 голосов
/ 21 мая 2018

Используйте

SELECT *
       FROM feiertag('2017-01-01');

вместо

SELECT feiertag('2017-01-01');

, чтобы получить результат в виде таблицы.

(Обработайте функцию, как если бы она была таблицей.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...