PostgreSQL函数返回表
我想在PostgreSQL上设置一个返回表的函数。这是函数的源代码:PostgreSQL函数返回表,sql,postgresql,function,Sql,Postgresql,Function,我想在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;
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)
我希望有不同的列(每个值对应一个列,因为表在函数开头指定),而不是只有一个列包含所有值。有人知道为什么会发生这种情况吗?我怎样才能解决这个问题
谢谢
Timo的使用
SELECT *
FROM feiertag('2017-01-01');
而不是
SELECT feiertag('2017-01-01');
以表格的形式获取结果
(将函数视为一个表。)感谢您节省了更多的时间,这很好!