기술 정보
home
채널 소개
home

Oracle Outer Join과 ANSI Join 혼용 시 오류 발생

문서 유형
장애 해결
분야
App개발
키워드
ansijoin
join
outerjoin
적용 제품 버전
6FS07
7FS02
오류 코드
8047

현상

Oracle의 Outer Join 과 ANSI Join 을 혼용하여 사용할 경우, TBR-8047: Outer join operator (+) cannot be used with ANSI joins. 오류가 발생합니다.

원인

Syntax check 단계에서 Oracle의 Outer Join과 ANSI Join을 혼용한 경우, 에러가 발생합니다.
이는 기존에 혼용을 일부 허용하던 특수 처리 로직이 제거(revert)되었기 때문입니다. 결과적으로 두 문법을 함께 사용하는 쿼리는 문법 오류로 간주되어 실행되지 않습니다.

해결

쿼리에서 Oracle Outer Join과 ANSI Join을 혼용하지 않도록 수정합니다.
TBR-8047: Outer join operator (+) cannot be used with ANSI joins 에러는 의도된 동작이며, 문법상 두 방식은 함께 사용할 수 없습니다.
참고
재현 시나리오
1. TEST TABLE 생성
SQL> create table t128504(c1 number, c2 number); SQL> create table t1285042(c1 number, c2 number); SQL> insert into t128504 select level, level+1 from dual connect by level<10; SQL> insert into t1285042 select level, level+1 from dual connect by level<10;
SQL
복사
2. oracle outer join과 ansi join 혼용한 경우
SQL> select * from t128504 a1 LEFT OUTER JOIN t1285042 a2 on a1.c1 = a2.c1(+); TBR-8047: Outer join operator (+) cannot be used with ANSI joins. at line 1, column 16 of null: select * from t128504 a1 LEFT OUTER JOIN t1285042 a2 on a1.c1 = a2.c1(+)
SQL
복사
3. oracle outer join과 ansi join 혼용 제거
SQL> select * from t128504 a1 LEFT OUTER JOIN t1285042 a2 on a1.c1 = a2.c1; C1 C2 C1 C2 ---------- ---------- ---------- ---------- 1 2 1 2 2 3 2 3 3 4 3 4 4 5 4 5 5 6 5 6 6 7 6 7 7 8 7 8 8 9 8 9 9 10 9 10
SQL
복사