문제
계층형 질의문 SELECT COUNT(*) FROM DUAL CONNECT BY LEVEL <= 2; 의 실행 결과로 옳은 것은?
① 0 ② 1 ③ 2 ④ 3
정답
3번
해설
정답: 3. CONNECT BY LEVEL <= 2 는 LEVEL이 1, 2가 될 때까지 행을 전개하여 2개의 행을 생성한다. 그 위에 COUNT(*)를 적용하면 2가 반환된다.
오답 풀이
- ①: 행이 생성되므로 0이 아니다.
- ②: DUAL은 본래 1행이지만 CONNECT BY LEVEL <= 2로 행이 2개로 늘어난다.
- ③: 정답. LEVEL=1, LEVEL=2 두 행이 만들어져 COUNT(*)=2.
- ④: LEVEL <= 2 조건은 LEVEL=3에서 전개를 멈추므로 3행이 아니다.
보충 개념 CONNECT BY LEVEL <= N 패턴은 START WITH 없이도 1행짜리 DUAL을 N행으로 늘리는 대표적인 행 생성(숫자 시퀀스) 기법이다. LEVEL은 1부터 시작해 조건을 만족하는 동안 1씩 증가한다.