利用syscat.references递归查出他的所有关联表

2014-11-24 01:08:59 · 作者: · 浏览: 0

找出所有的父表:
Java代码
With reftables(reftabname,PRIORITY) as(
Select reftabname,1 from syscat.references as refx where refx.tabname=PROJECT
union all
Select ref2.reftabname,reftables.PRIORITY+1 from reftables,syscat.references ref2 where reftables.reftabname=ref2.tabname
)
Select * from reftables ORDER BY PRIORITY DESC;

With reftables(reftabname,PRIORITY) as(
Select reftabname,1 from syscat.references as refx where refx.tabname=PROJECT
union all
Select ref2.reftabname,reftables.PRIORITY+1 from reftables,syscat.references ref2 where reftables.reftabname=ref2.tabname
)
Select * from reftables ORDER BY PRIORITY DESC;


找出所有的子表
Java代码
With reftables(tabname,PRIORITY) as(
Select tabname,1 from syscat.references as refx where refx.reftabname=PROJECT
union all
Select ref2.tabname,reftables.PRIORITY+1 from reftables,syscat.references ref2 where reftables.tabname=ref2.reftabname
)
Select distinct * from reftables ORDER BY PRIORITY DESC;