介绍
使用MySQL自定义函数,获取当前部门及上级所有部门的名称。
示例代码
向自定义函数传入子级部门id,自定义函数返回,子级部门名称及上级所有层级部门名称,以" / "分隔符分割。
(1)创建自定义函数
CREATE FUNCTION `read_group_names`(id int) RETURNS varchar(255)
begin
declare s_parent_group_id int default 0;
declare s_group_name text default '';
declare s_group_names text default '';
set s_parent_group_id=id;
a:loop
select parent_group_id,group_name into s_parent_group_id,s_group_name from sys_group where group_id=s_parent_group_id;
if s_group_names=''
then
set s_group_names=s_group_name;
else
set s_group_names=concat(s_group_name,' / ',s_group_names);
end if;
if s_parent_group_id=0 then leave a;
end if;
end loop a;
return s_group_names;
END
(2)使用自定义函数
方式1:直接调用
select read_group_names(11);
11是子级部门id。
方式2:含在查询语句中
select id,read_group_names(id) from sys_group;