[转]生成无级树(sql函数)--处理示例
[转]生成无级树(sql函数)

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

相关文章:

  • 2022-03-05
  • 2021-11-10
  • 2021-06-25
  • 2021-08-07
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
猜你喜欢
  • 2021-11-17
  • 2021-04-30
  • 2022-12-23
  • 2021-07-16
  • 2021-10-11
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案