Pergunta

Eu estou tentando buscar o equivalente DB2 de generate_series () (o PostgreSQL-maneira de gerar linhas). Eu, obviamente, não quer codificar as linhas com um VALORES comunicado.

select * from generate_series(2,4);

    generate_series
    -----------------
                    2
                    3
                    4
    (3 rows)
Foi útil?

Solução

A cláusula where precisa ser um pouco mais explícito sobre os limites da recursão, para DB2 para suprimir o aviso. Aqui está uma versão ligeiramente modificada que não aciona o aviso:

with dummy(id) as (
    select 2 from SYSIBM.SYSDUMMY1    
    union all
    select id + 1 from dummy where id < 4
)
select id from dummy

Outras dicas

Eu consegui escrever uma consulta recursiva que se encaixa:

with dummy(id) as (
    select 2 from SYSIBM.SYSDUMMY1    
    union all
    select id + 1 from dummy where id + 1 between 2 and 4
)
select id from dummy

A consulta pode ser adaptado a qualquer for (;;) você pode sonhar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top