④ SYS_CONNECT_BY_PATH (colm, char)
SYS_CONNECT_BY_PATH는 계층형 쿼리에서만 사용할 수 있는 함수로, 루트 노드에서 시작해 자신의 행까지 연결된 경로 정보를 반환한다. 이 함수의 첫 번째 파라미터로는 컬럼이, 두 번째 파라미터인 char은 컬럼 간 구분자를 의미한다. 그럼 부서에 대한 경로 정보를 추출해 보자.
입력
SELECT department_id, LPAD(' ' , 3 * (LEVEL-1)) || department_name, LEVEL,
SYS_CONNECT_BY_PATH( department_name, '|')
FROM departments
START WITH parent_id IS NULL
CONNECT BY PRIOR department_id = parent_id;
각 로우별로 어떤 계층 경로를 타고 있는지 알 수 있다. 두 번째 매개변수인 구분자로 해당 컬럼 값에 포함된 문자는 사용할 수 없다는 점을 주의해야 한다. 위 쿼리에서 구매/생산부는 ‘/’문자가 속해 있는데, 구분자로 ‘/’를 사용하면 다음과 같은 오류가 발생한다.
입력
SELECT department_id, LPAD(' ' , 3 * (LEVEL-1)) || department_name, LEVEL,
SYS_CONNECT_BY_PATH( department_name, '/')
FROM departments
START WITH parent_id IS NULL
CONNECT BY PRIOR department_id = parent_id;
결과
SQL 오류: ORA-30004: SYS_CONNECT_BY_PATH 함수를 사용할 때 열 값의 일부로 분리자를 사용할 수 없습니다.