工作記錄
向上遞歸函數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/