PostgreSQL:DEFAULT表达式中不允许使用返回集合的函数

时间:2019-02-08 17:02:18

标签: postgresql postgresql-10

有人知道是否可以将generate_series函数用作函数的默认值吗?

current_date可以正常工作,但默认情况下还希望指定一个值范围,但默认表达式中不允许使用set-returning函数。在这种情况下,最好插入一个默认值,以不触发一些无界查询。我想您可以在函数本身中添加逻辑?

CREATE OR REPLACE FUNCTION foo(
        start_date date DEFAULT current_date
    ,   end_date date DEFAULT (current_date - interval '60 days')
    ,   sites int[] DEFAULT (generate_series(1, 10, 1))
    ,   details bool DEFAULT false
) RETURNS text
AS $$
select 'foo'
$$ LANGUAGE SQL;
select foo();

1 个答案:

答案 0 :(得分:0)

为什么不使用范围函数?

https://www.postgresql.org/docs/9.3/functions-range.html

'[1,10]'::int4range

但是我很确定,如果我正确地解释了这一点,不会导致出现您想要的东西,例如(1,2,3,2,1)。

相关问题