将oracle的递归转换成mysql递归

运行结果及报错内容

这是oracle的递归函数,从子部门递归父级部门

CREATE OR REPLACE FUNCTION FUN_GET_ORG_ID (child_dept_id IN NUMBER
return NUMBER
is
retCode number:=-1;
BEGIN
  SELECT
    distinct dept_Id INTO retCode
  FROM
    t_Department_Info
  WHERE
    par_dept_id is null
    start with dept_Id = child_dept_id
    connect by prior par_dept_id = dept_Id;
RETURN (retCode) ;
END ;

我的解答思路和尝试过的方法

我查了一下mysql递归,完全看不懂,链接如下
https://blog.csdn.net/wocaizhale/article/details/121600221

我想要达到的结果

请问有会sql的帮我改一下他这段吗

img

你看的这个是查询所有下级的递归,看点有点懵正常的,查询父级的是这样的:

DELIMITER 
CREATE FUNCTION `getParentList`(root_id BIGINT) 
      RETURNS VARCHAR(1000) 
      BEGIN 
           DECLARE k INT DEFAULT 0;
         DECLARE fid INT DEFAULT 1;
         DECLARE str VARCHAR(1000) DEFAULT '$';
         WHILE rootId > 0 DO //大于0时一直执行循环
              SET fid=(SELECT pid FROM table_name WHERE root_id=id); //查询当前root_id的父级ID
               IF fid > 0 THEN //父级id大于0时,把父级合并到变量str 中,用逗号隔开
                  SET str = concat(str,',',fid);   
                   SET root_id = fid;  
               ELSE 
                     SET root_id=fid;
               END IF;  
      END WHILE;
    RETURN str;
  END  //
delimiter ;

测试语句:
SELECT getParentList(10);

mysql什么版本,8.x的话直接CTE递归简单明了