本节描述那些可能返回多于一行的函数。目前这个类型的函数只有序列号生成函数,如表9-39所述。
表9-39. 序列号生成函数
函数参数类型返回类型描述
generate_series(start, stop)int 或 bigintsetof int 或 setof bigint (与参数类型相同)生成一个数值序列,从 start 到 stop ,步长为 1 。
generate_series(start, stop, step)int 或 bigintsetof int 或 setof bigint (与参数类型相同)生成一个数值序列,从 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)