SQLD · 59회 변형 · 어려움 난이도 · 21번

Q.21202559어려움 변형2과목 · SQL 기본 및 활용
사원 테이블 EMP에 사원 A의 관리자가 B, 사원 B의 관리자가 A로 등록된 순환 데이터가 존재한다. 아래 계층형 질의를 실행하자 순환 참조로 인해 CONNECT BY 루프 오류(ORA-01436)가 발생하였다. 오류 없이 계층을 전개하면서 순환이 일어난 행까지 식별하기 위한 조치로 가장 적절한 것은?
보기
SELECT ENAME, LEVEL
FROM   EMP
START WITH MGR IS NULL
CONNECT BY PRIOR EMPNO = MGR;
  • 1WHERE 절에 CONNECT_BY_ISLEAF = 1 조건을 추가해 리프 노드만 조회하면 순환 경로가 결과에서 제외되어 오류가 발생하지 않는다.
  • 2SELECT 절에 CONNECT_BY_ISCYCLE 의사컬럼을 추가하기만 하면 순환이 자동으로 허용되므로, CONNECT BY 절은 수정하지 않아도 오류가 발생하지 않는다.
  • 3CONNECT BY 절을 CONNECT BY NOCYCLE PRIOR EMPNO = MGR로 수정하면 순환 지점에서 전개가 중단되어 오류가 발생하지 않으며, SELECT 절에 CONNECT_BY_ISCYCLE을 추가하면 순환이 일어난 행에서 1이 반환된다.
  • 4CONNECT BY 절을 CONNECT BY NO CYCLE PRIOR EMPNO = MGR로 수정하면 순환 지점 이후의 전개가 중단되어 오류 없이 결과가 반환된다.

정답: 3 · CONNECT BY 절을 CONNECT BY NOCYCLE PRIOR EMPNO = MGR로 수정하면 순환 지점에서 전개가 중단되어 오류가 발생하지 않으며, SELECT 절에 CONNECT_BY_ISCYCLE을 추가하면 순환이 일어난 행에서 1이 반환된다.

해설
해설 불러오는 중…
이 회차 문제 풀어보기 →SQLD 더 풀기