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