我正在尝试创建一个存储过程,它返回给定 id 的父母的所有 Id。这是我到目前为止所得到的,出于所有意图和目的,该表由两列组成,id 和 ParentID。当前代码的结果是它似乎没有从表中获取 ParentID,它只是尝试将传入的 id 两次添加到临时表中,然后失败。我哪里做错了?
CREATE PROCEDURE `mydb`.`Test` (IN id int)
BEGIN
DECLARE parentId INT;
DECLARE n INT;
DROP TEMPORARY TABLE IF EXISTS _1067_parents;
CREATE TEMPORARY TABLE _1067_parents (
node_id INT NOT NULL PRIMARY KEY
);
set n = 0;
set parentId := id;
get_parents_loop: LOOP
set parentId := (select ParentID from mydb.myTable where TDOID = parentId);
IF parentId is NULL THEN
LEAVE get_parents_loop;
END IF;
INSERT INTO _1067_parents(node_id) Values (parentId);
END LOOP get_parents_loop;
SELECT *
FROM _1067_parents;
end