Skip to content

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).

Categorias ​