1.业务场景

有时候我们希望通过sql语句解决一些复杂的问题,比如根据一个ID 查询组织的路径。这个时候我们可以使用函数来实现。

2.函数编写

CREATE FUNCTION   getGroupById(groupid varchar(200))
  RETURNS VARCHAR(255)
 BEGIN
	DECLARE name VARCHAR(64);
	DECLARE rtnName VARCHAR(200) DEFAULT '';
	DECLARE pid VARCHAR(64);

	SELECT NAME_,PARENT_ID_ into name,pid  FROM OS_GROUP WHERE GROUP_ID_=groupid;

	SET rtnName=CONCAT( name  , "/" , rtnName);

	WHILE pid !='0' DO
     
		SELECT NAME_,PARENT_ID_ into name,pid  FROM OS_GROUP WHERE GROUP_ID_=pid;
		SET rtnName=CONCAT( name  , "/" , rtnName);
	
	END WHILE;

	SET rtnName=TRIM('/' FROM rtnName);

 RETURN rtnName;
 END;

  1. 这里用到了多个变量赋值 使用 select a,b into a_,b_
  2. 使用了循环控制
  3. 使用了字符串函数处理

3. 函数使用方法

select getGroupById('1546682020572852225')

得出的结果

红迅集团/产品部/产品1

4.需要注意的是mysql8 创建函数的时候会报错

我们需要首先执行一下

set GLOBAL log_bin_trust_function_creators =true;

posted on 2022-07-27 10:09  自由港  阅读(1917)  评论(0)    收藏  举报