博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mssql语句递归查找所有下级
阅读量:7048 次
发布时间:2019-06-28

本文共 726 字,大约阅读时间需要 2 分钟。

if exists (select * from sys.all_objects where name='GetOrgTree')

begin
drop function GetOrgTree
end
go
create function GetOrgTree (@OrgID int)
returns @tb table (id int,Orgname varchar(20),ParentID int)
as
begin
--注意这里的表名是上面新建的表 tb_menu
--这条语句是插入跟@OrgName相同的这条记录 这里假设是天津
insert @tb select id,OrgName,ParentID from tabOrg where id = @OrgID
--返回受上一语句影响的行数
while @@rowcount > 0
-- 将上次的ID做为查询条件在进行插入操作,
--父ID在@tb中 现在@tb中的ID为 3 因为上面是天津 即where pid in (3)
--并且id 不在@tb中 and id not in (3)
--这里需要大家理解下
insert @tb
select id,OrgName,ParentID from tabOrg
where ParentID in (select id from @tb)
and id not in (select id from @tb)
--最后返回@tb
return
end

--select * from dbo.GetOrgTree(1)

转载于:https://www.cnblogs.com/SilenceTom/p/5575982.html

你可能感兴趣的文章
CSS Media Queries响应式布局
查看>>
P1451 求细胞数量(广搜)
查看>>
什么是构造函数
查看>>
SaltStack入门到精通第一篇:安装SaltStack
查看>>
HTTP的长连接和短连接
查看>>
java 桌面程序打包 EXE4J
查看>>
05-spark streaming & kafka
查看>>
python杂记
查看>>
Touch基本
查看>>
【uva】1220 Party at Hali-Bula
查看>>
cd 简化命令
查看>>
面试需要学习的内容
查看>>
Dot模板的使用小结2
查看>>
Linux下date使用
查看>>
《JAVA NIO》Channel
查看>>
JS-第七章
查看>>
(五)适配器模式-C++实现
查看>>
history对象的一些知识点
查看>>
卸载Linux自带openjdk
查看>>
SonarQube 7.x 的安装使用 + 集成Maven 使用
查看>>