zoukankan      html  css  js  c++  java
  • SqlServer 递归查询

    表:

    CREATE TABLE Category(

      ID      INT,

      NAME     INT,

      ParentID   INT

    向上递归:

     

    代码
    CREATE    FUNCTION [dbo].[GetRootCategoryID]
    /*
        Author:yanghh
        Date:2009-08-10
        des:得到某一类根结点
    */
    (
        
    @CategoryID INT
    )
    RETURNS @SubCategory TABLE(CategoryID INT,Level INT)
    AS
    BEGIN
        
    DECLARE @level    INT
        
    SET @level = 0
        
    INSERT INTO @SubCategory
        
    SELECT ID,@level FROM Category WHERE ID=@CategoryID
        
    WHILE @@ROWCOUNT >0
        
    BEGIN
            
    SET @level = @level+1
            
    INSERT INTO @SubCategory
            
    SELECT ParentId,@level FROM Category A, @SubCategory B 
                
    WHERE B.CategoryID = A.ID AND B.Level=@level-1
        
    END
        
    RETURN
    END

    向下递归:

    代码
    CREATE    FUNCTION [dbo].[GetChildCategoryID]
    /*
        Author:yanghh
        Date:2009-08-10
        des:得到某一类别子结点

    */
    (
        
    @CategoryID INT
    )
    RETURNS @SubCategory TABLE(CategoryID INT,Level INT)
    AS
    BEGIN
        
    DECLARE @level    INT
        
    SET @level = 0
        
    INSERT INTO @SubCategory
        
    SELECT ID,@level FROM CC_VOD_FilmCategory WHERE ID=@CategoryID
        
    WHILE @@ROWCOUNT >0
        
    BEGIN
            
    SET @level = @level+1
            
    INSERT INTO @SubCategory
            
    SELECT ParentId,@level FROM Category A, @SubCategory B 
                
    WHERE B.CategoryID = A.ParentID AND B.Level=@level-1
        
    END
        
    RETURN
    END
  • 相关阅读:
    Spark Executor内存管理
    Spring中Bean的生命周期及其扩展点
    NIO非阻塞IO
    TCP,UDP和socket,Http之间联系和区别
    md5加密,md5加盐加密和解密
    线程监测方法多久没被调用
    项目部署后,替换.class文件不生效
    mysql存储过程导入表
    java生成二维码
    Map中keySet和entrySet的区别
  • 原文地址:https://www.cnblogs.com/BlueWoods/p/1681801.html
Copyright © 2011-2022 走看看