首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

求一遍历树的存储过程解决方法

2012-04-13 
求一遍历树的存储过程知道某一节点ID,现在要列出它所在的那个分支的所有父节点在程序中控制要多次访问数据

求一遍历树的存储过程
知道某一节点ID,现在要列出它所在的那个分支的所有父节点
在程序中控制要多次访问数据库,现在想用存储过程实现!
表如下:编号,父类编号,名称
uid, parent_id, name

[解决办法]

SQL code
CREATE PROCEDURE usp_GetAllParentNodesByUid(@uid INT)ASBEGIN    DECLARE @tempId INT    SET @tempId=@uid    CREATE TABLE #([uid] INT,[parent_id] INT,[name] NVARCHAR(10))    WHILE @tempId IS NOT NULL    BEGIN        INSERT INTO # SELECT * FROM [yourTable] WHERE [uid]=@tempId        SELECT @tempId=[parent-Id] FROM [yourTable] WHERE [uid=@tempId]    END    SELECT * from #    DROP TABLE #END
[解决办法]
CREATE PROCEDURE usp_GetAllParentNodesByUid
(
@uid INT
)
AS
BEGIN
DECLARE @tempId INT
SET @tempId=@uid
CREATE TABLE #([uid] INT,[parent_id] INT,[name] NVARCHAR(10))
WHILE @tempId IS NOT NULL
BEGIN
INSERT INTO # SELECT * FROM [yourTable] WHERE [uid]=@tempId
SELECT @tempId=[parent-Id] FROM [yourTable] WHERE [uid=@tempId]
END
SELECT * from #
DROP TABLE #
END

[解决办法]
关注
[解决办法]
CREATE PROCEDURE dbo.GetParentId
(
@id int
)
AS
create table #temp(id int, parentid int)
insert into #temp select uid ,ParentId from table where uid=@Id
while @@rowcount>0
begin
insert #temp select a.uid,a.Parent_id from table a,#temp b where a.uid = b.parentid 
if(exists (select 1 from #temp where parentid =0))
break
end
select top 1 * id from #temp
RETURN 
没调试,说下思路
[解决办法]
学习下,知道的,大家来说说这思路

热点排行