9.18. 集合を返す関数

本節では、複数行を返すことができる関数について説明します。現在、このクラスの関数のみが、表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が正の場合、startstopよりも大きいと0行が返ります。反対に、stepが負の場合は、startstopよりも小さいと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)