开发遇到一个报错 ORA-01436: 用户数据中的 CONNECT BY 循环
报错原因
根据网上的资料,产生这个错误的原因是数据形成了循环。例如下面这个语句:
SELECT r1.region_id,parent_id
FROM cnl_region r1
WHERE r1.region_id =1
START WITH r1.region_id = 1
CONNECT BY PRIOR r1.region_id = r1.parent_id;
如果数据在region_id为1的parent_id为24684,而region_id为24684的parent_id为1,这样就会产生了循环。
解决办法
- 使用 connect by nocycle,不推荐,该方法只是可以不报错,但很可能得不到正确的结果。
- 修改基础数据