這樣做的關鍵在於「遞歸地」這個詞。爲此,創建一個自己調用的過程。這是父母的一個例子,但是因爲它使用光標來滾動條目,所以如何使用它來查找涉及遞歸的兒童和其他關係應該很簡單。
CREATE OR REPLACE PROCEDURE find_parents(
org_id NUMBER,
lvl NUMBER DEFAULT 1) AS
c_parent table1.id%TYPE;
c_name table1.name%TYPE;
CURSOR c_parents (c_id table1.id%TYPE) IS
SELECT parent, name FROM table1 WHERE (id = c_id);
BEGIN
dbms_output.put('-');
OPEN c_parents(org_id);
LOOP
FETCH c_parents INTO c_parent, c_name;
EXIT WHEN c_parents%notfound;
dbms_output.put_line('Level ' || lvl || ' parent: [ID: ' || c_parent || ', NAME: ' || c_name || ']');
find_parents(c_parent, lvl + 1);
END LOOP;
CLOSE c_parents;
END;
如果您在創建小提琴時遇到了麻煩,鏈接將很方便。 – Laurence
對不起。 http://sqlfiddle.com/#!4/5310d/5/0 –
雅,它有助於清楚。因此,這是您第三次將新信息添加到您想要的內容中。算了吧。 – REW