本節では、複数行を返すことができる関数について説明します。現在、このクラスの関数のみが、表9-38で説明する、連続生成関数です。
表 9-38. 連続生成関数
| 関数 | 引数型 | 戻り値の型 | 説明 |
|---|---|---|---|
| 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よりも大きいと0行が返ります。反対に、stepが負の場合は、startがstopよりも小さいと0行が返ります。stepが0の時はエラーになります。また、NULLが入力された場合も0行が返ります。以下に数点例を示します。
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)