您的位置:首页 > 其它

无限级根据Id获得所有子节点数据

2013-11-29 18:31 459 查看
if exists (select 1
from  sysobjects
where  id = object_id('tb1')
and   type = 'U')
drop table tb1
go
create table tb1 (
Id                   int                  null,
name                 varchar(50)          null,
pId                  int                  null,
level int,
sort int
)
go

if exists (select * from sysobjects where name='proc_menu_select')
drop procedure proc_menu_select
go
create proc proc_menu_select(@id int,@t int)
as
declare @i int
declare @count int, @tmpid int
create table #tb(id int,name varchar(50),pId int,level int,sort int)
select @count=COUNT(1) from tb_Menu where pId=@id
insert #tb select m.id,m.name,m.pId,m.level,m.sort from tb_Menu m  where pId=@id
select @i=level from tb_Menu where id=@id
while(@count<>0)
begin
set @i=@i+1
print @i
select @count=COUNT(1) from tb_Menu m left join #tb on #tb.id=m.pId where #tb.level=@i
insert #tb select m.id,m.name,m.pId,m.level,m.sort from tb_Menu m left join #tb on #tb.id=m.pId where #tb.level=@i
end
select id,name,pId,level,sort from #tb
go

exec proc_menu_select 3,1
select * from tb_Menu;
select * from tb1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐