Oracle:在用户数据中按循环连接
我理解Oracle中何时可能发生循环.理论上它说如果一条记录既是另一个节点的父节点又同时是它的子节点,那么它就可以进入一个循环. 但是我无法理解为什么我的这个特定查询会进入循环. SELECT Empno,Ename,Job FROM Emp START WITH Empno = 7839 CONNECT BY PRIOR Job='PRESIDENT' 有人可以解释一下这个数据如何导致循环. 请解释一下,为什么这是一个错误,循环在哪里? 提前致谢. 仅供参考,该表是Oracle中SCOTT用户的默认EMP表. 解决方法
如果没有满足START WITH且具有Job =’PRESIDENT’的行,则循环将永远不会发生(Oracle仅检索START WITH行) 如果表中有一行满足START WITH且有Job =’PRESIDENT’,则无论如何都会发生循环,因为:1. Oracle查找满足START WITH(根行)的所有行.2.对于p.1中的每一行,Oracle会扫描整个表以查找后代.所有行(包括第1行中的行)都满足CONNECT BY中的条件(因为之前的Job =’PRESIDENT’始终为true)明显…… (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |