本节描述那些可能返回多于一行的函数。目前这个类型的函数只有序列号生成函数, 如 Table 9-38 所述。
Table 9-38. 序列号生成函数
函数 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
generate_series(start, stop) | int 或 bigint | setof int 或 setof bigint (与参数类型相同) | 生成一个数值序列,从 start 到 stop,步进为一。 |
generate_series(start, stop, step) | int or bigint | setof int or setof bigint (same as argument type) | 生成一个数值序列,从 start 到 stop,步进为 step。 |
如果 step 是正数,而 start 大于 stop, 那么返回零行。想法,如果 step 是负数,start 小于 stop, 则返回零行。如果是 NULL 输入,也产生零行。step 为零则是一个错误。 下面是一些例子:
select * from generate_series(2,4); generate_series ----------------- 2 3 4 (3 rows) select * from generate_series(5,1,-2); generate_series ----------------- 5 3 1 (3 rows) select * from generate_series(4,3); generate_series ----------------- (0 rows) select current_date + s.a as dates from generate_series(0,14,7) as s(a); dates ------------ 2004-02-05 2004-02-12 2004-02-19 (3 rows)