본문 바로가기

Database/ORACLE

ORACLE CONNECT BY LEVEL 사용

계층구조쿼리를 공부하다보면 만나는 SQL문이 CONNECT BY LEVEL이다. 오늘 공부한김에 이해한 내용을 정리해보겠다.

보통은 PRIOR이랑 엮여서 쓰이는 경우가 많다 SCOTT 계정 기준으로

SELECT LEVEL, LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, CONNECT_BY_ROOT empno ,mgr, job 
FROM emp
START WITH job='PRESIDENT'
CONNECT BY PRIOR empno=mgr;

KING부터 시작해서 결과 값을 보여준다.

따로 떼어서 LEVEL을 활용해 써보면 일반적인 FOR문이랑 비슷하다고 생각해도 될 것 같다.

SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 10;
SELECT LEVEL*0.1 FROM DUAL CONNECT BY LEVEL <= 10;
SELECT LEVEL*-1 FROM DUAL CONNECT BY LEVEL <= 10;
SELECT 11-LEVEL FROM DUAL CONNECT BY LEVEL <= 10;

이렇게 하면 LEVEL 값에 따라 결과가 다르게 나온다.

앞으로도 계속 만날텐데 잘 기억해둬야겠다.

'Database > ORACLE' 카테고리의 다른 글

ORACLE 12C SAMPLE DATABASE 만들기  (0) 2019.04.30
ORACLE ) Dual 사용해보기  (0) 2019.04.30
내가 보려고 작성하는 Oracle12 & DataStage 설치  (0) 2019.04.29