DROP FUNCTION `getChildList`;
CREATE FUNCTION `getChildList`(rootId INT)
RETURNS varchar(1000)
BEGIN
#声明两个局部变量
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
#初始化局部变量
SET sTemp = '$';
#调用cast函数将int转换为char
SET sTempChd =cast(rootId as CHAR);
#递归拼接
WHILE sTempChd is not null DO
#存储每次递归结果
SET sTemp = concat(sTemp,',',sTempChd);
#将参数作为pid,然后查询其子id,然后将子id作为pid,
#查询以子id为pid的子id,依次循环下去,直到所有节点都为叶子节点
SELECT group_concat(dept_id) INTO sTempChd FROM sys_dept where FIND_IN_SET(parent_id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
执行函数报错时:
解决方法:
执行此语句:show VARIABLES like "log_bin_trust_function_creators";
发现log_bin_trust_function_creators的值为OFF(这是默认值)
那么,我们再执行语句:set global log_bin_trust_function_creators = 1;