2009-04-30 18 views

Antwort

8

Die where-Klausel muss etwas expliziter in Bezug auf die Grenzen der Rekursion sein, damit DB2 die Warnung unterdrücken kann. Hier ist eine leicht angepasst Version, die nicht die Warnung auslöst:

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

ich es geschafft, eine rekursive Abfrage zu schreiben, die passt:

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 

Die Abfrage kann auf das, was angepasst werden für (;;) Sie träumen können.

+0

Ergebnis ist in Ordnung, aber es gibt eine Warnung an db2 v9 SQL0347W Der rekursive allgemeinen Tabellenausdruck „LOGINNAME.DUMMY“ eine unendliche Schleife enthält. SQLSTATE = 01605 – Boune

+0

Ja, ich habe es auch in DB2v8. Ich weiß nicht, wie ich es entfernen soll. –