mysql 自定義函數寫法

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章