2009-04-30 17 views

Respuesta

8

La cláusula where necesita ser un poco más explícita sobre los límites de la recursión para que DB2 suprima la advertencia. Aquí hay una versión ligeramente más ajustado que no desencadenan la advertencia:

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

he conseguido escribir una consulta recursiva que encaja:

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 

La consulta se puede adaptar a cualquier cosa para (;;) se puede soñar.

+0

El resultado está bien, pero genera una advertencia en DB2 V9 SQL0347W La expresión de tabla común recursiva "LOGINNAME.DUMMY" puede contener un bucle infinito. SQLSTATE = 01605 – Boune

+0

Sí, también lo tengo en DB2v8. Aunque no sé cómo eliminarlo. –