--处理示例
(转)sql server 生成树形菜单

(转)sql server 生成树形菜单
--示例数据
(转)sql server 生成树形菜单
create table tb(ID int,Name varchar(10),ParentID int)
(转)sql server 生成树形菜单
insert tb select 1,'AAAA'    ,0
(转)sql server 生成树形菜单
union all select 2,'BBBB'    ,0
(转)sql server 生成树形菜单
union all select 3,'CCCC'    ,0
(转)sql server 生成树形菜单
union all select 4,'AAAA-1'  ,1
(转)sql server 生成树形菜单
union all select 5,'AAAA-2'  ,1
(转)sql server 生成树形菜单
union all select 6,'BBBB-1'  ,2
(转)sql server 生成树形菜单
union all select 7,'CCCC-1'  ,3
(转)sql server 生成树形菜单
union all select 8,'CCCC-2'  ,3
(转)sql server 生成树形菜单
union all select 9,'AAAA-1-1',4
(转)sql server 生成树形菜单
go
(转)sql server 生成树形菜单
(转)sql server 生成树形菜单
--创建处理的函数
(转)sql server 生成树形菜单
create function f_id()
(转)sql server 生成树形菜单
returns @re table(id int,level int,sid varchar(8000))
(转)sql server 生成树形菜单
as
(转)sql server 生成树形菜单
begin
(转)sql server 生成树形菜单    
declare @l int
(转)sql server 生成树形菜单    
set @l=0
(转)sql server 生成树形菜单    
insert @re select id,@l,right(10000+id,4)
(转)sql server 生成树形菜单    
from tb where ParentID=0
(转)sql server 生成树形菜单    
while @@rowcount>0
(转)sql server 生成树形菜单    
begin
(转)sql server 生成树形菜单        
set @l=@l+1
(转)sql server 生成树形菜单        
insert @re select a.id,@l,b.sid+','+right(10000+a.id,4)
(转)sql server 生成树形菜单        
from tb a,@re b
(转)sql server 生成树形菜单        
where a.ParentID=b.id and b.level=@l-1
(转)sql server 生成树形菜单    
end
(转)sql server 生成树形菜单    
return
(转)sql server 生成树形菜单
end
(转)sql server 生成树形菜单
go
(转)sql server 生成树形菜单
(转)sql server 生成树形菜单
--调用函数实现查询
(转)sql server 生成树形菜单
select a.*,MenuName=space(b.level*4)+a.Name
(转)sql server 生成树形菜单
from tb a,f_id() b
(转)sql server 生成树形菜单
where a.id=b.id
(转)sql server 生成树形菜单
order by b.sid
(转)sql server 生成树形菜单
go
(转)sql server 生成树形菜单
(转)sql server 生成树形菜单
--删除测试
(转)sql server 生成树形菜单
drop table tb
(转)sql server 生成树形菜单
drop function f_


相关文章: