您的位置:首页 > 数据库

用游标来处理 sql树型结构 求子节点

2009-05-07 15:00 393 查看
1 采用函数

Code

ALTER FUNCTION GetID(@ID VARCHAR(36))

RETURNS VARCHAR(500)

AS

BEGIN

DECLARE @RetValue VARCHAR(5000)

DECLARE @TempID VARCHAR(360)

SET @TempID=''

SET @RetValue=''

--声明两个变量并附空值(赋空值很重要)

DECLARE ID_cursor CURSOR FOR SELECT ID FROM WorkCorps WHERE ParentID=@ID ORDER BY ID DESC

--声明游标 定位到WHERE ParentID=@ID的ID

OPEN ID_cursor

FETCH NEXT FROM ID_cursor INTO @TempID

WHILE(@@FETCH_STATUS=0)

BEGIN

IF LEN(@TempID)>0

SELECT @RetValue=@TempID + ',' + @RetValue

IF((SELECT COUNT(ID) FROM WorkCorps WHERE ParentID=@TempID)>0)

BEGIN

set @RetValue= @RetValue+',' + dbo.GetID(@TempID)

END

--判断子节点是否还有子节点有就递归

FETCH NEXT FROM ID_cursor INTO @TempID

END

CLOSE ID_cursor

DEALLOCATE ID_cursor

SELECT @RetValue=LEFT(@RetValue,LEN(@RetValue)-1)--处理末尾逗号

RETURN @ID + ','+ @RetValue--返回值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: