* SYS_CONNECT_BY_PATH는 계층적 쿼리에서만 유효하다. * CONNECT BY 조건에 의해 리턴 된 각 행에 대해 char 값으로 분리 된 컬럼 값을 루트에서 노드로 컬럼의 값의 경로를 리턴한다. * column과 char는 모드 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 데이터 유형 중 하나여야 하며, 반환 된 문자열은 VARCHAR2 데이터 유형이고 column과 동일한 문자 집합이다.
위에 설명은 말 그대로 column은 계층 쿼리로 쓸 컬럼, char는 계층을 구분할 구분자가 들어가는 부분.
문자형식 받고 반환해주는 특징
예제를 보며 확인해보자
* 예제
SELECT LPAD(' ', 2*level-1)||SYS_CONNECT_BY_PATH(last_name, '/') "Path"
FROM employees
START WITH last_name = 'Kochhar'
CONNECT BY PRIOR employee_id = manager_id;
Path
-------------------결 과 부 분----------------------------
/Kochhar
/Kochhar/Greenberg
/Kochhar/Greenberg/Faviet
/Kochhar/Greenberg/Chen
/Kochhar/Greenberg/Sciarra
/Kochhar/Greenberg/Urman
/Kochhar/Greenberg/Popp
/Kochhar/Whalen
/Kochhar/Mavris
/Kochhar/Baer
/Kochhar/Higgins
/Kochhar/Higgins/Gietz
첫번째줄 select를 보면 SYS_CONNECT_BY_PATH(last_name, '/')이 쓰인 것을 볼 수 있다.
last_name을 계층으로 사용할 것이고, '/' 로 구분한다.
계층으로 나누는 것은 3번째 줄에 있는 START WITH CONNECT BY PRIOR에 의해서 나눠지고