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后,怎么操作就看你了。
速度很快,适合大型企业。

posted on 2007-06-21 10:41 ms_dos 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/nine425/archive/2007/06/21/791515.html

SQL--取得子部门的存储过程相关推荐

  1. SQL 基础-- 子查询

    --========================= --SQL 基础--> 子查询 --========================= /* 一.子查询 子查询就是位于SELECT.UP ...

  2. java代码递归查找部门和子部门id

    1.根据传入部门的id,查找所有子部门id,返回包含传入id和子部门id集合 2.不推荐使用,我是因为数据量小,而且访问此方法的请求少才这样写 3.推荐数据库级别sql的递归查询(我没有成功实现才这样 ...

  3. java递归查询公司下所有部门及子部门

    业务要求: 查询公司下所有子部门及子部门: 原型: 1.创建公司和部门实体: CompanyVos: package com.suwei.sysMng.vo;   import java.io.Ser ...

  4. sqlplus查oracle存储过程,在SQL PLUS中调试Oracle存储过程

    我们在通常情况下,开发和调试Oracle存储过程都是用可视化工具,如PL SQL DEVELOPER,TOAD等等.不会有人傻到要用 vim 去开发,再用 sql plus 去调试的存储过程的.但在有 ...

  5. SQL Server2000 未公开的存储过程

    SQL Server2000 未公开的存储过程 sp_columns_rowset The sp_columns_rowset stored procedure returns the complet ...

  6. MySQL高级 - SQL优化 - 子查询优化

    优化嵌套查询 Mysql4.1版本之后,开始支持SQL的子查询.这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.使用子查询可以一次性的完成很多逻辑 ...

  7. [转] sql server 跨数据库调用存储过程

    A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( @UserName nvarchar(20) =null ,@LoginPwd nvarchar(60) ...

  8. SQL Server常用的系统存储过程应用实例(转)

    摘要:Sql Server自带的系统存储过程有许多,但大部分我们是不常用的.我在实践中根据自己的体会,总结整理了一些比较常用的,加上一些实例介绍给大家.本期介绍: l         sp_attac ...

  9. json 插入数据_Power BI数据回写SQL Server(2)——存储过程一步到位

    在上一讲: Power BI数据回写SQL Server(1)没有中间商赚差价 中, 我们讲过,利用循环的方式将PQ中得到的table表逐行导入SQL Server中,有的朋友怀疑这种方式会不会造成数 ...

  10. SQL必知必会-存储过程

    存储过程 迄今为止,我们使用的大多数SQL语句都是针对一个或多个表的单条语句.并非所有操作都这么简单,经常会有一些非常复杂的操作需要多条语句才能完成. 例子: 为了处理订单,必须核对以保证库存中有相应 ...

最新文章

  1. Bioinformatics|癌症细胞系的用药反应预测
  2. MQTT client id重复导致连接失败
  3. 【架构】学习余额宝背后的服务治理架构
  4. matplotlib 画多条折线图且x轴下标非数值
  5. 前端js获取图片大小 扩展名_前端 JS 获取 Image 图像 宽高 尺寸
  6. MVC教程第一篇:准备工作
  7. datagridview 纵向 横向 合并单元格_每日一Excel技巧(熟能生巧):带公式的单元格,快速批量复制、填充...
  8. pycharm 中文_环境搭建:3.pycharm社区版安装配置
  9. 人脸对齐(二十)--PRN
  10. Linux下安装、配置、启动Apache
  11. vue中显示实时时间
  12. raft算法 java_raft-java首页、文档和下载 - 分布式一致性算法 Raft 的 Java 实现 - OSCHINA - 中文开源技术交流社区...
  13. UnityShader入门精要——运动模糊
  14. 条件运算符(三目运算符)
  15. 网易云linux字体太小,网易云音乐客户端和百度网盘在Deepin下字体显示太小的解决...
  16. RabbitMQ学习笔记
  17. 2015 百度 移动软件开发 一二面
  18. 获取微信用户信息方案(测试)
  19. 计算机研究生去中学当老师,清华、北大博士硕士争当中小学老师,就业难吗?看待遇就令人眼红...
  20. 移除字符串中多余的空格(包括中间多余空格及两头多余空格)

热门文章

  1. python 直方图的绘制方法全解_5种方法教你用Python玩转histogram直方图
  2. servicemix7 linux,学习ServiceMix笔记(三) 学习ServiceMix的基本命令之安装组件
  3. java实现pdf打印工具类,Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文字/图片/页眉页脚)...
  4. rethat安装MySQL多例_SSM 使用 mybatis 分页插件 pagehepler 实现分页
  5. 从副高到评正高的条件_大学老师从副高到正高职称有多难?
  6. package.json 封装 vue模块_Vue管理系统前端~相关工具引入及封装
  7. 3、http网络编程——struct linger
  8. 《中国人工智能学会通讯》——1.20 聊天机器人研究存在的挑战
  9. 物联网技术如何驱动大数据
  10. IntelliJ IDEA 将 Maven 构建的 Java 项目打包