zoukankan      html  css  js  c++  java
  • SQL取得子部门的存储过程

    SET ANSI_NULLS OFF
    GO
    SET QUOTED_IDENTIFIER OFF
    GO

    CREATE PROCEDURE [dbo].[UP_Department_GetAllChildDeptGUIDByLevels]
    @DeptGUID uniqueidentifier,
    @StartLevel int,
    @EndLevel int
     AS
    BEGIN
    SET NOCOUNT ON

    declare @str        varchar(8000)
    Declare @sql        varchar(8000)
    declare @str1       varchar(8000)
    declare @str2       varchar(8000)
    declare @CountBy    int
    declare @i          int

    set @i = 0
    set @CountBy = dbo.DeptLevel_CountBy(@StartLevel,@EndLevel)
    set @str1 = 'select guid from Department(nolock) where parentguid = '''+cast(@DeptGUID as varchar(50))+''''
    set @str2 = 'select guid from Department(nolock) where parentguid in ('
    set @str = @str1
    set @sql = @str1

    while @i < @CountBy
        begin
            set @str = @str2 + @str + ')'
            set @sql = @sql + ' union ' + @str
            set @i = @i + 1
        end
    --print @sql
    execute(@sql)


    END

    SET ANSI_NULLS OFF


    CREATE FUNCTION [dbo].[DeptLevel_CountBy]
    (
    @StartLevel         int,
    @EndLevel           int
    )
    RETURNS int
    AS
    BEGIN
    DECLARE @CountBy int
     
        SELECT @CountBy=count(LevelCode)
        FROM DeptLevel
        WHERE LevelCode BETWEEN @StartLevel AND @EndLevel

     RETURN @CountBy

    END

    其中LevelCode为部门的层级,此算法取得子部门ID后,怎么操作就看你了。
    速度很快,适合大型企业。

  • 相关阅读:
    移动 ProgramDataPackage Cache 文件夹
    Visual Studio 2017
    微信小程序 View:flex 布局
    echarts 模拟迁徙
    树莓派3 Windows 10 IoT Core
    Lumia 830 win10m 启用触摸按键
    青岛旅游
    <孤独者生存(小小辛巴投资手记)>读书笔记
    Python.Unix和Linux系统管理指南
    <低风险投资之路>读书笔记
  • 原文地址:https://www.cnblogs.com/brawei/p/748937.html
Copyright © 2011-2022 走看看