树型结构数据,求某结点的所有父结点的自定义函数

本文介绍了一个SQL自定义函数,该函数用于从树状结构数据中检索指定节点的所有父节点,并详细展示了函数的实现过程及内部逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE FUNCTION f_father(@dpcode varchar(9)) /*树型结构数据,求某结点的所有父结点的自定义函数*/
RETURNS @new table([dpcode] [varchar] (9) , --结点编码
[dpname] [varchar] (20) , --结点名称
[dpcode_p] [varchar] (9) --此结点的父结点编码
) AS
BEGIN
declare @temp table([dpcode] [varchar] (9) , --结点编码
[dpname] [varchar] (20) , --结点名称
[dpcode_p] [varchar] (9) --此结点的父结点编码
) --数据临时存放表
declare @t table([dpcode] [varchar] (9) , --结点编码
[dpname] [varchar] (20) , --结点名称
[dpcode_p] [varchar] (9) --此结点的父结点编码
) --中间临时表
declare @tt table([dpcode] [varchar] (9) , --结点编码
[dpname] [varchar] (20) , --结点名称
[dpcode_p] [varchar] (9) --此结点的父结点编码
) --中间交换临时表


delete @temp
delete @t
delete @tt
delete @new


insert into @temp select DPTCODE, DPTNAME, DPTCODE_P from base_dept
insert into @t select * from @temp where dpcode=@dpcode
insert into @new select * from @t --结果临时表
while ( 1=1)

begin
if (exists(select * from @t where dpcode ='001')) --当为根时,停止循环
begin
break
end
insert into @tt select * from @t --中间交换临时表
delete @t
insert into @t select * from @temp where dpcode in
(select dpcode_p from @tt)
delete @tt
insert into @new select * from @t
end
--insert into @new select * from @temp where dpcode=@dpcode

return
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值