wdx1992828 发表于 2016-11-17 06:40:19

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

找出所有的父表:

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(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 andreftables.PRIORITY<2
)
Select distinct * from reftables ORDER BY PRIORITY DESC;

其中reftables.PRIORITY<2是用来控制层数,子表找到第几层!
页: [1]
查看完整版本: DB2利用syscat.references递归查出他的所有关联表