SQL 函数:查询 父节点下所有子节点的数据值

博客分享了SQL函数的调用方法,这些方法是在项目使用中搜集资料完善而来,旨在帮助大家解决相关问题。

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

 SQL函数:

ALTER FUNCTION [dbo].[fn_GetChildren]
(
	@BmSNo varchar(20),  --0=第一级取公司,否则传入一个部门编号
	@JiBie INT=-1, --目前共 N 级,0=公司、1=事业部、···,-1=全部
	@Type INT=0 --层级(0=下级(多级),1=自身加下级(多级),2=下级岗位(多级,不含下级部门下的岗位),3=下级岗位(多级,含下级部门的所有岗位+本部门的自身以下的岗位))
)
RETURNS 
@return TABLE
(
	ID VARCHAR(20),  --编码
	MingCheng NVARCHAR(20) --名称
)
AS
BEGIN
	IF(@BmSNo='0')
	BEGIN
		INSERT INTO @return (ID, MingCheng)
		SELECT ID, MingCheng FROM dbo.Table WHERE 条件
		RETURN;
	END

	
	IF(@Type=0 AND @JiBie=-1)
	BEGIN
		--递归取出所有下级部门
		WITH child AS (
			SELECT ID, MingCheng, ShangJiBMID FROM Table WHERE SNo=@BmSNo
			UNION ALL
			SELECT A.ID, A.MingCheng, A.ShangJiBMID FROM Table A, child B WHERE A.ShangJiBMID =B.ID
		)
		INSERT INTO @return (ID, MingCheng) SELECT ID, MingCheng FROM child;
	END

	RETURN;
END

调用方法:

SELECT ID INTO #bmDB FROM dbo.fn_GetChildren(@BMSNo,DEFAULT,DEFAULT)

SELECT ID,··· from Table
WHERE (@BMSNo = '' OR bm.ID IN (SELECT * FROM #bmDB))

 项目中使用时,搜集资料所完善。希望能够帮助大家!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值