계층적 절의 (LEVEL)
- LEVEL
- 의사 칼럼
- 테이블에서 행의 LEVEL을 가리키는 일련번호
- 형식
SELECT LEVEL {, 컬럼 [, ...]}
FROM 테이블명
WHERE 조건
START WITH 조건
CONNECT BY [PRIOR 컬럼1 비교연산자 컬럼2]|[컬럼1 비교연산자 PRIOR 컬럼2]
START WITH 절
CONNECT BY 절
- 계층관계를 지정하는 절
- PRIOR 연산자
- TOP-DOWN / BOTTOM-UP 방식을 결정
| TOP-DOWN | BOTTOM-UP |
|---|
| CONNECT BY PRIOR 자식키 = 부모키 | CONNECT BY PRIOR 부모키 = 자식키 |
| 최상위 계층부터 출력 | 최하위 계층부터 출력 |
| 함수 | 반환 |
|---|
| CONNECT_BY_ISLEAF | LEAF(하위) 데이터가 없으면 1, 있으면 0을 반환 |
| CONNECT_BY_ISCYCLE | ROOT(최상위) 데이터면 1, 아니면 0을 반환 |
| CONNECT_BY_ROOT | 해당 데이터의 ROOT 데이터 값을 반환 |
가지 제거
SELECT
LPAD(' ', (LEVEL-1)*3) || ename '계층도'
FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr AND ename != 'CLARK';