본문 바로가기

db/oracle

oracle connect by level 함수

반응형

oracle connect by level 함수

CONNECT BY 절의 역할

  • CONNECT BY 절은 계층 구조를 정의하는 데 사용되며, 주로 다음과 같은 상황에서 활용됩니다.
    트리 구조 데이터 조회: 조직도, 파일 시스템 등 부모-자식 관계의 데이터를 탐색할 때 사용됩니다.
  • 반복적인 행 생성: 조건에 맞는 행을 인위적으로 여러 번 반복하여 생성할 때 사용됩니다. 이 경우가 바로 CONNECT BY LEVEL의 용도입니다.

예시

SELECT LEVEL, LPAD(TO_CHAR(LEVEL), 2, '0') AS formatted_number
FROM DUAL
CONNECT BY LEVEL <= 15;

LEVEL과 <= 15의 의미

  • LEVEL: 오라클의 의사(Pseudo) 컬럼으로, 현재 행의 계층 레벨을 나타냅니다. 루트 노드(가장 상위 레벨)의 LEVEL은 1부터 시작하여 계층이 깊어질수록 1씩 증가합니다.
  • <= 15: 반복을 멈추는 종료 조건입니다. LEVEL 값이 15 이하일 때까지 쿼리를 반복하라는 의미입니다.

따라서 CONNECT BY LEVEL <= 15는 "레벨이 15가 될 때까지 행을 반복해서 생성하라"는 뜻이 됩니다.

예시 분석

  • 시작: DUAL 테이블에서 첫 번째 행을 시작점으로 삼습니다. 이때 LEVEL은 1입니다.
  • 반복: CONNECT BY 절의 조건(LEVEL <= 15)을 확인합니다.
  • LEVEL이 1일 때, 조건이 참이므로 다음 행을 생성하고 LEVEL을 2로 만듭니다.
  • LEVEL이 2일 때, 조건이 참이므로 다음 행을 생성하고 LEVEL을 3으로 만듭니다.
  • 이 과정을 LEVEL이 15가 될 때까지 반복합니다.
  • 종료: LEVEL이 16이 되면 조건(16 <= 15)이 거짓이 되므로 반복을 멈춥니다.

결과적으로 이 쿼리는 1부터 15까지의 숫자를 가진 15개의 행을 생성하게 됩니다. LEVEL 컬럼을 사용해 번호를 매기거나 연속된 값을 만들 때 유용하게 쓰입니다.

 

요약하자면, CONNECT BY LEVEL <= 15는 특정 횟수(15회)만큼 행을 생성하는 반복문과 같은 역할을 하는 오라클의 특수한 구문입니다.







반응형

'db > oracle' 카테고리의 다른 글

oracle 소수점 이하 버림  (0) 2025.09.13
오라클 숫자 앞에 0 추가, LPAD  (0) 2025.09.13
union all union 차이점  (0) 2025.09.13
oracle ORA-32044  (0) 2025.09.13
oracle 10초 마다 저장 하기[통계]  (0) 2025.09.13