特定の ID の親のすべての ID を返すストアド プロシージャを作成しようとしています。これが私がこれまでに得たものであり、すべての意図と目的のために、テーブルは id と ParentID の 2 つの列で構成されています。現在のコードの結果は、テーブルから ParentID を取得していないようです。渡された ID を一時テーブルに 2 回追加しようとして失敗します。どこで私は間違えましたか?
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