## # 9.25. Set Returning Functions

This section describes functions that possibly return more than one row. The most widely used functions in this class are series generating functions, as detailed in Table 9.63 and Table 9.64. Other, more specialized set-returning functions are described elsewhere in this manual. See Section 7.2.1.4 for ways to combine multiple set-returning functions.

Table 9.63. Series Generating Functions

Function

Description
`generate_series` ( `start` `integer`, `stop` `integer` [, `step` `integer` ] ) → `setof integer`

`generate_series` ( `start` `bigint`, `stop` `bigint` [, `step` `bigint` ] ) → `setof bigint`

`generate_series` ( `start` `numeric`, `stop` `numeric` [, `step` `numeric` ] ) → `setof numeric`

Generates a series of values from `start` to `stop`, with a step size of `step`. `step` defaults to 1.
`generate_series` ( `start` `timestamp`, `stop` `timestamp`, `step` `interval` ) → `setof timestamp`

`generate_series` ( `start` `timestamp with time zone`, `stop` `timestamp with time zone`, `step` `interval` ) → `setof timestamp with time zone`

Generates a series of values from `start` to `stop`, with a step size of `step`.

When `step` is positive, zero rows are returned if `start` is greater than `stop`. Conversely, when `step` is negative, zero rows are returned if `start` is less than `stop`. Zero rows are also returned if any input is `NULL`. It is an error for `step` to be zero. Some examples follow:

``````SELECT * FROM generate_series(2,4);
generate_series
``````