我瞭解Oracle何時會發生循環。從理論上說,如果一條記錄既是父節點又是另一個節點,同時又是它的孩子,那麼它可以進入一個循環。Oracle:通過用戶數據中的循環連接
但我不明白爲什麼我這個特定的查詢運行到一個循環。
SELECT Empno, Ename, Job
FROM Emp
START WITH Empno = 7839
CONNECT BY PRIOR
Job='PRESIDENT'
有人可以請解釋我如何將這些數據導致循環。 我做了CONNECT_BY_ISCYCLE檢查,發現記錄循環是KING(總統)。 但是我仍然不明白怎麼可能,因爲KING是總統,而且我也沒有看到任何方式使它成爲表中任何記錄的孩子和父母。
請解釋一下,爲什麼這是一個錯誤,循環在哪裏?
在此先感謝。
僅供參考,該表是Oracle中SCOTT用戶的默認EMP表。
嗨Multisync,我理解這個理論。我不明白的是,即使我有一行Job ='PRESIDENT',我得到了循環錯誤。 – Manish 2014-10-20 12:24:00
@Manish「Oracle評估父行的CONNECT BY條件的PRIOR表達式,以及表中每行的其他表達式」。 Oracle在查找後代時掃描整個表格 – Multisync 2014-10-20 12:27:25
感謝您的回答。我現在明白了。 – Manish 2014-10-20 12:38:35