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;
- 這裏用到了多個變量賦值 使用 select a,b into a_,b_
- 使用了循環控制
- 使用了字符串函數處理
3. 函數使用方法
select getGroupById('1546682020572852225')
得出的結果
紅迅集團/產品部/產品1
4.需要注意的是mysql8 創建函數的時候會報錯
我們需要首先執行一下
set GLOBAL log_bin_trust_function_creators =true;