ORA-01436: 用户数据中的 CONNECT BY 循环

今天在查询一个菜单的所有父菜单的时候,报“ORA-01436: 用户数据中的 CONNECT BY 循环 ”错误,所用SQL如下:

select * from roles m start with m.rno='690702' connect by prior m.r_rno=m.rno;

ORA-01436: 用户数据中的 CONNECT BY 循环_第1张图片

仔细查看一下,发现记录RNO为69的记录,其父R_RNO也为69,导致死循环

ORA-01436: 用户数据中的 CONNECT BY 循环_第2张图片

解决方法:

select * from roles m start with m.rno='690702' connect by nocycle prior m.r_rno=m.rno;

采用nocycle来避免死循环,执行后效果如图,发现其将死循环的记录给去掉了

ORA-01436: 用户数据中的 CONNECT BY 循环_第3张图片

 

你可能感兴趣的:(Oracle,ora,01436,用户数据,CONNECT,BY,循环)