본문 바로가기

IT관련

(12cR1 신기능) 오라클 Lateral Inline View, 인라인뷰에서 조인시 ORA-00904 에러 방지

Oracle 12cR1 New Feature 중에 Lateral Inline View 가 있습니다.

골자는 SQL문에서 인라인뷰(Inline View) 사용시, 인라인뷰 내에서 메인쿼리의 테이블과 Join 할 수 있게 해주는 기능입니다.

(인라인뷰는 SQL Query 에서 From 절에 테이블대신 SQL을 사용하는 것)

 

아래와 같이 인라인뷰 내에서 메인쿼리의 EMP 테이블을 참조해서 Join 을 시도하는 경우 ORA-00904 에러가 발생합니다.

 

ORA-00904 에러는 테이블 또는 컬럼을 못 찾을때 발생하는 에러입니다.

( select * from DEPT d ... ) 인라인뷰 SQL 내에서는 e 테이블이 뭔지 알 수 없기 때문에 ORA-904 에러가 발생하고 있습니다.

 

Oracle 12cR1 버전부터 추가된 Lateral 이라는 키워드를 써주면 이게 가능해집니다.

 

Lateral 키워드 사용시 제약사항은,

Lateral View 내에서는 Pivot/Unpivot 절을 사용할 수 없고,

Outer Join 을 사용할 수 없습니다. (이 부분은 Lateral 키워드 대신 Outer Apply 키워드를 사용하면 가능)