zoukankan      html  css  js  c++  java
  • SQL实现递归算法获取部门所有子部门

    -- 根据用户编号、企业编号、数据等级获取部门列表
    --
    CREATE PROC TDept_GetList_ByUidAndComNoAndLevel
    @Uid INT,
    @ComNo INT,
    @DataLevel INT
    AS
    DECLARE @detptId INT
    SELECT @detptId=ISNULL(DepartmentID,0) FROM dbo.ChildUser WHERE  id=@Uid
    --PRINT @detptId
    IF(@DataLevel=0)--查个人
    SELECT * FROM dbo.TDept WHERE TDtID=@detptId
    ELSE IF(@DataLevel=2)--查全部
    SELECT * FROM dbo.TDept WHERE LTRIM(RTRIM(TDtComNo))=@ComNo
    ELSE IF(@DataLevel=1)
    BEGIN  
    DECLARE @t_Level TABLE(TDtID INT NULL,TDtPID int null,TDtName VARCHAR(50),TDtSort INT NULL ,TDtFlag INT NULL,TDtComNo VARCHAR(100),level int null)
    DECLARE @Level int
    SET @Level=0
    INSERT @t_Level SELECT [TDtID],[TDtPID],[TDtName],[TDtSort],[TDtFlag],[TDtComNo],@level 
    FROM [TrackWay_Extend].[dbo].[TDept] where TDtID=@detptId 
    --FROM @t
    --WHERE PID IS NULL
    WHILE @@ROWCOUNT>0
    BEGIN
    SET @Level=@Level+1
    INSERT @t_Level SELECT a.[TDtID],a.[TDtPID],a.[TDtName],a.[TDtSort],a.[TDtFlag],a.[TDtComNo],@level 
    FROM [TrackWay_Extend].[dbo].[TDept] a,@t_Level b
    WHERE a.TDtPID=b.TDtID
    AND b.Level=@Level-1
    END
    SELECT * FROM @t_Level
    END 
    ELSE
    SELECT * FROM dbo.TDept WHERE TDtID=@detptId
  • 相关阅读:
    php-instanceof运算符
    windows10-seaslog安装笔记
    [类和对象]1 封装 调用成员函数
    [C++] 拓展属性
    [C++] 引用详解
    [C++] Const详解
    ROS 常用
    win10 ubuntu16双系统安装教程
    [0] OpenCV_Notes
    Ubuntu16.04安装openCV的问题集合
  • 原文地址:https://www.cnblogs.com/itbob/p/2321676.html
Copyright © 2011-2022 走看看