遍历树形结构

SQL中遍历树形目录的一个自定义函数,返回一个table

这样调用:select * from
MaterielTypeTree('','')

-- 查找制定类别下面的一级子类别
CREATE    function  dbo.MaterielTypeTree
(
    
@DepotNumber   varchar ( 50 ),
    
@TypeNumber   varchar ( 50 )
)

returns   @TreeInfo   table
(
    TypeNumber 
varchar ( 50 not   null ,
    TypeName 
varchar ( 50 not   null ,
    FatherNumber 
varchar ( 50 ),
    ELevel 
int   not   null  
)
AS
BEGIN
    
declare   @level   as   int

    
set   @level = 0

    
INSERT   INTO   @TreeInfo   SELECT  TypeNumber,TypeName,FatherNumber, @level   FROM  dbo.MaterielType  where  TypeNumber = @TypeNumber   AND  DepotNumber = @DepotNumber
    
        
if @@ROWCOUNT   > 0 -- 如果改成WHILE则全部查询出来
             BEGIN
                
set   @level = @level + 1

                
INSERT   INTO   @TreeInfo   SELECT  M.TypeNumber,M.TypeName,M.FatherNumber, @level   FROM  MaterielType  AS  M  JOIN   @TreeInfo   AS  T  ON  M.FatherNumber  =  T.TypeNumber  AND  T.ELevel  =   @level - 1   AND  M.DepotNumber = @DepotNumber
            
END
                
return
END





你可能感兴趣的:(遍历)