Esta seção descreve as funções que têm possibilidade de retornar mais de uma linha. Atualmente as únicas funções nesta classe são as funções geradoras de séries, conforme detalhado na Tabela 9-40.
Tabela 9-40. Funções geradoras de séries
| Função | Tipo do argumento | Tipo retornado | Descrição |
|---|---|---|---|
| generate_series(início, fim) | int ou bigint | setof int ou setof bigint (o mesmo tipo do argumento) | Gera uma série de valores, do início ao fim, com tamanho do passo igual a um. |
| generate_series(início, fim, passo) | int ou bigint | setof int ou setof bigint (o mesmo tipo do argumento) | Gera uma série de valores, do início ao fim, com tamanho do passo igual a passo. |
Quando o passo é positivo, são retornadas zero linhas se o início for maior que o fim. Inversamente, quando o passo é negativo são retornadas zero linhas se o início for menor que o fim. Também são retornadas zero linhas para entradas NULL. É errado o passo ser igual a zero. Alguns exemplos:
=> select * from generate_series(2,4);
generate_series
-----------------
2
3
4
=> select * from generate_series(5,1,-2);
generate_series
-----------------
5
3
1
=> select * from generate_series(4,3);
generate_series
-----------------
(0 linhas)
=> 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