2009-04-30 73 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