PRIOR 단항 연산자
PRIOR 단항 연산자는 계층 쿼리의 CONNECT BY절에서만 사용됩니다. 모든 레벨에서 모든 종속 항목을 가져오려면 계층 쿼리의 CONNECT BY절에 PRIOR 연산자를 추가해야 합니다. 이 기능은 Db2® Warehouse on Cloud 관리 서비스의 엔트리 플랜에는 적용되지 않습니다.
- expression
- NEXT VALUE 표현식, 계층 쿼리 구문(예: LEVEL 의사 컬럼), SYS_CONNECT_BY_PATH 함수 또는 OLAP 함수를 포함하지 않는 표현식입니다. 이러한 항목 중 하나를 지정하면 SQLSTATE 428H4가 리턴됩니다.
사용법
CONNECT BY절은 FROM절에 지정하는 소스 결과 테이블과 계층 쿼리의 중간 결과 테이블 Hn 사이에서 내부 조인을 수행합니다. FROM절에서 참조되고 PRIOR 연산자에 대한 인수인 테이블에 대한 모든 컬럼 참조는 Hn 테이블 범위를 넘어서는 것으로 간주됩니다.
연산자의 결과 데이터 유형은 표현식의 결과 데이터 유형입니다.
다음 예에 표시된 바와 같이, 일반적으로 중간 결과 테이블
Hn의 기본 키를 소스 결과 테이블의 외부 키에 조인하여 재귀적으로 계층을
트래버스합니다.
CONNECT BY PRIOR T.PK = T.FK기본 키가
복합 키인 경우, 다음 예에 표시된 바와 같이 각 컬럼 앞에 PRIOR를 추가하십시오.
CONNECT BY PRIOR T.PK1 = T.FK1 AND PRIOR T.PK2 = T.FK2PRIOR
연산자는 플러스 부호(+) 또는 이중 수직바(||) 등 어느 인픽스 연산자보다
우선순위가 높습니다. 따라서 인픽스 연산자를 인수로 사용하여 표현식을 전달하려면 괄호를 사용해야 합니다.
연산이 수행되는 순서를 표시하려면 피연산자 및 연산자 그룹을 괄호로 묶어야 합니다. 예를 들어,
다음 표현식은 계층 구조에 있는 실제 행의 LASTNAME 값에 연결된 이전 행의 FIRSTNME
값을 리턴합니다.
PRIOR FIRSTNME || LASTNAME이 표현식은
다음 목록의 첫 번째 항목과 동등하지만 두 번째 항목과는 동등하지 않습니다. (PRIOR FIRSTNME) || LASTNAME
PRIOR (FIRSTNME || LASTNAME)계층 쿼리의 CONNECT BY절 외부에 PRIOR 연산자를 지정하면 SQLSTATE 428H4가 리턴됩니다.
예제
- 다음 쿼리는 DEPARTMENT 테이블의 부서 계층 구조를
리턴합니다.
이 쿼리는 다음 결과를 리턴합니다.SELECT LEVEL, DEPTNAME FROM DEPARTMENT START WITH DEPTNO = 'A00' CONNECT BY NOCYCLE PRIOR DEPTNO = ADMRDEPTLEVEL DEPTNAME ----------- ---------------------------------------- 1 SPIFFY COMPUTER SERVICE DIV. 2 PLANNING 2 INFORMATION CENTER 2 DEVELOPMENT CENTER 3 MANUFACTURING SYSTEMS 3 ADMINISTRATION SYSTEMS 2 SUPPORT SERVICES 3 OPERATIONS 3 SOFTWARE SUPPORT 3 BRANCH OFFICE F2 3 BRANCH OFFICE G2 3 BRANCH OFFICE H2 3 BRANCH OFFICE I2 3 BRANCH OFFICE J2
