工作记录
向上递归函数test:
BEGIN DECLARE sTemp VARCHAR(1000); DECLARE sTempChd VARCHAR(1000); SET sTemp = '$'; SET sTempChd =cast(rid as CHAR); WHILE sTempChd is not null DO SET sTemp = concat(sTemp,',',sTempChd); SELECT group_concat(scomp_father) INTO sTempChd FROM subcompany where FIND_IN_SET(scomp_code,sTempChd)>0; END WHILE; RETURN sTemp; END
参数:rid VARCHAR(50)
返回类型:varchar(1000)
调用:
SELECT * from subcompany where FIND_IN_SET(scomp_code,test('G3000001'));
简单说明一下:
scomp_father 是父节点
scomp_code 是当前节点
向上递归传入的参数是最下级的节点,而向下递归传入的是最上级的节点(并且上面函数中scomp_father 和scomp_code 的位置要互换)
注意:这样的循环是有风险的,可自行添加适合的条件跳出循环防止锁死
转载请注明博客出处:http://www.cnblogs.com/cjh-notes/