Conceito
Função gera uma tabela numérica conforme intervalo informado entre "start" e "stop".
Esta função é nativa em PostgreSQL e foi implementada em Oracle exatamente com a mesma funcionalidade.
Em Oracle o arquivo de criação desta função é o svn://ttpg9/totalicommerce/beta/ansi/function/0ora/GENERATE_SERIES.sql.
Assinatura de generate_series
Oracle
generate_series(pstart IN integer, pstop IN integer, pstep IN integer := 1 ) return CURSOR_NUMBERS PIPELINED Obs: As palavras "start" e "stop" são reservadas no Oracle por esse motivo foi utilizado o prefixo "p".
PostgreSQL
generate_series(start, stop, step) return setof int or setof bigint (same as argument type)
Parâmetros
start: (integer)
Número inicial da lista.
Ex.: 1
stop: (integer)
Npumero final da lista.
Ex.: 10
step: (integer)
Número de saltos para cada exibição.
Caso não seja informado um valor será utilizado 1 para este parâmetro.
Ex.: 1
Retorno
return: (CURSOR_NUMBERS em Oracle, setof int or setof bigint em PostgreSQL)
A função retorna uma lista de registros.
Veja os exemplos abaixo.
Exemplos de Uso
Oracle
SELECT g.column_value AS generate_series FROM TABLE(generate_series(1,5)) g; -- Results GENERATE_SERIES
1
2
3
4
5
. 5 ROWS selected
SELECT g.column_value AS generate_series FROM TABLE(generate_series(2,4)) g -- Results GENERATE_SERIES
2
3
4
. 3 ROWS selected.
SELECT g.column_value AS generate_series FROM TABLE(generate_series(5,1,-2)) g -- Results GENERATE_SERIES
5
3
1
. 3 ROWS selected.
SELECT g.column_value AS generate_series FROM TABLE(generate_series(4,3)) g -- Results no ROWS selected
SELECT g.column_value AS generate_series FROM TABLE(generate_series(-4,-1,1)) g -- Results GENERATE_SERIES
-4
-3
-2
-1
. 4 ROWS selected.
PostgreSQL
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)
Alterações
Nessa seção estão relacionadas as alterações que a função sofreu a cada versão. Desta forma, pode-se por aqui verificar quais tratamentos passam a ser necessários em sistemas que utilizam a função e vão passar a utilizar uma versão mais nova.
Versão 5.4C
- Criação da função generate_series em Oracle (compatível com a função homônima em PostgreSQL).