level은 가상 열이며, 트리 내에서 어떤 행(위치)에 있는지를 알수있다. (그림 참고)
예를 들어 START WITH ~ CONNECT BY 같은 계층형 쿼리를 쓰지않고
SELECT LEVEL FROM company
위와같이 select를 했을 경우에 level 컬럼의 값은 0이라고 나온다.
당연히 계층이 존재하지 않기때문에 그럴 것이다.
하지만, START WITH ~ CONNECT BY 를 쓰게되면 계층은 존재하게 된다.
즉, level을 쓸 수 있다는 것
SELECT LEVEL
, CODE_SORT
, LPAD(' ', 4*(LEVEL-1)) || CODE_NM AS CODE_NM
FROM CODE_TBL
START WITH PAR_CODE IS NULL CONNECT BY PRIOR CODE = PAR_CODE
ORDER SIBLINGS BY CODE_SORT;
위와 같은 코드를 실행하게 되면, 아래 표처럼 나타나게 된다.
LEVEL
CODE_SORT
CODE_NM
1
1
회원구분
2
1
비회원
2
2
회원
같은 트리 행에서 같은 level이고 부모 행에서는 최상의 level인 1인 것을 볼 수 있다.