前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL 自定义函数递归查出部门及下属部门

MYSQL 自定义函数递归查出部门及下属部门

原创
作者头像
时光_赌徒
修改2020-10-09 16:24:38
1.5K0
修改2020-10-09 16:24:38
举报
文章被收录于专栏:记录记录

通过部门ID查询子部门

例如:select  getDepartmentListName(1);getDepartmentListName:函数名;1:参数

获取结果:顶级部门/一级子部门/二级子部门/三级子部门/四级部门

DELIMITER $$

USE `sporch`$$

DROP FUNCTION IF EXISTS `getDepartmentListName`$$

CREATE DEFINER=`sporch`@`%` FUNCTION `getDepartmentListName`(depId INT) RETURNS VARCHAR(1000) CHARSET utf8

BEGIN

DECLARE depName VARCHAR(1000) DEFAULT '';

DECLARE tmpName VARCHAR(1000) DEFAULT '';

SET @depId = depId;

#循环递归条件

WHILE @depId IS NOT NULL AND @depId > 0 DO

SELECT departmentPid,departmentName INTO @depId,tmpName FROM t_department WHERE departmentId=@depId;

IF tmpName IS NULL OR tmpName = '' THEN

SET @depId = NULL;

ELSE

#判断是否为空

IF tmpName != '' THEN

SET depName = CONCAT(tmpName,'/',depName);

END IF;

#退出

IF @depId = 0 THEN

SET @depId = NULL;

END IF;

END IF;

END WHILE;

IF depName IS NOT NULL AND LENGTH(depName) > 2 THEN

SET depName = REVERSE(SUBSTR(REVERSE(depName),2));

END IF;

RETURN depName;

END$$

DELIMITER ;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档