表结构为 ID Name ParentID
如何通过一个存储过程 searchID (ID,level)遍历树?
其中level为层差
create table createtable(
id int,
name varchar(100),
parentID int
)
insert into createtable(ID,Name,ParentID ) values(1,'1',0);
insert into createtable(ID,Name,ParentID ) values(2,'1-1',1);
insert into createtable(ID,Name,ParentID ) values(3,'1-2',1);
insert into createtable(ID,Name,ParentID ) values(4,'1-2-1',3);
insert into createtable(ID,Name,ParentID ) values(5,'2',0);
insert into createtable(ID,Name,ParentID ) values(6,'2-1',0);
create proc searchID
@ID int
as
begin
WITH cte
AS
(
SELECT * ,0 AS level FROM createtable WHERE ID=@ID
UNION ALL
SELECT g.*,level+1 FROM createtable g INNER JOIN cte
ON g.ParentID=cte.ID
)
SELECT * FROM cte
end
exec searchID '1'