create table t_tree(id int IDENTITY(1,1) ,parentid int,name varchar(10))
insert into t_tree select 0,''
insert into t_tree select 1,''
insert into t_tree select 1,''
insert into t_tree select 2,''
insert into t_tree select 3,''
insert into t_tree select 3,''
insert into t_tree select 5,''
insert into t_tree select 5,''
insert into t_tree select 5,''
go
create function get_child(@id int)
returns @child table (id int,parentid int,name varchar(10),level int)
as
begin
declare @level int
set @level=0
insert into @child
select *,@level from t_tree where id=@id
while @@rowcount>0
begin
set @level=@level+1
insert into @child
select a.*,@level from t_tree a,@child b
where b.id=a.parentid and b.level=@level-1
end
return
end
go
select * from get_child(1)