用游标来处理 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--返回值
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--返回值
相关文章推荐
- 一道SQL题...(关于树型结构的在关系表中的存储及其应用处理)
- SQL 自定义函数获得树型结构下的所有子孙节点
- MS SQL-处理树型结构数据 将子节点记录的各项字段值累加赋值给其父节点
- 一道 SQL 题 ... (关于树型结构的在关系表中的存储及其应用处理)
- 一道 SQL 题 ... (关于树型结构的在关系表中的存储及其应用处理)
- Oracle Class6-2. PL/SQL 简介(数据类型,逻辑比较,控制结构,错误处理)
- SQL Server 树型结构查询指定节点 SQL Server 树型结构查询的排序
- 删除节点处理的通用存储过程.sql
- sql表结构处理
- 106---oracle的PL/SQL,异常处理, 游标(CURSOR), 子程序,存储过程
- SQL处理多级分类,查询结果呈树形结构
- MS SQL Server树型结构数据显示的SQL语句(纯SQL语句,不用函数)
- 在SQL中使用递归查询具有树型结构的的数据表
- 树型结构处理_双编号
- 利用SQL 2005 CTE处理树型数据(ZT)
- 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql
- 巧用SQL中的WITH(树型结构数据的查询)
- Gnutella节点的结构及进程处理
- 利用SQL 2005 CTE处理树型数据
- SQL-SERVER数据库中的游标、存储过程和触发器 关键词 SQL-SERVER、游标、存储过程、触发器、高效处理数据