2009-04-30 71 views

回答

8

爲了讓DB2抑制警告,where子句需要更清楚地說明遞歸的邊界。下面是不會觸發報警略有調整形式:

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

我設法寫適合遞歸查詢:

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 

查詢可以適應任何的(;;)你可以夢想。

+0

結果是正常的,但它產生的DB2 V9 警告SQL0347W遞歸公用表表達式「LOGINNAME.DUMMY」可能包含無限循環。 SQLSTATE = 01605 – Boune 2009-05-05 19:37:04