본문 바로가기
IT 개발/에러

[에러] ORACLE ORA-00904: "...": invalid identifier

by Dev.Jeon 2023. 3. 15.
반응형

에러메시지

ORA-00904: "A"."CONTENTS": invalid identifier

ORA-00904: "A"."CONTENTS": 부적합한 식별자

 

현상/원인

          SELECT B.SEQ seq , 
                 A.P_SEQ pSeq , 
                 ROW_NUMBER() OVER(PARTITION BY A.P_SEQ ORDER BY A.SEQ) rnk , 
                 CASE 
                     WHEN A.P_SEQ IS NOT NULL 
                     THEN 'O' 
                     WHEN A.P_SEQ IS NULL 
                     THEN 'X' 
                 END ConnYn , 
                 A.CONTENTS contents , --문제의 컬럼
                 NVL(A.TARGET_YN,'X') targetYn
            FROM T_ST_CHILD A 
 LEFT OUTER JOIN T_ST B 
              ON A.P_SEQ = B.SEQ
           WHERE A.USE_YN = 'Y' 
        ORDER BY B.ST_NAME

오류 원인은 

1. 존재하지 않는 열명

2. 열명 오타, 대소문자 틀림

3. 열명 특수문자 들어간 경우

4. 열명 오라클 예약어인 경우

 

저의 경우는 1번 테이블에 없는 열명을 적어 두었기 때문에 난 오류입니다.

기능이 바뀌면서 테이블조인도 바뀌었는데 수정하지 않은 부분입니다.

 

해결

          SELECT B.SEQ seq , 
                 A.P_SEQ pSeq , 
                 ROW_NUMBER() OVER(PARTITION BY A.P_SEQ ORDER BY A.SEQ) rnk , 
                 CASE 
                     WHEN A.P_SEQ IS NOT NULL 
                     THEN 'O' 
                     WHEN A.P_SEQ IS NULL 
                     THEN 'X' 
                 END ConnYn , 
                 --A.CONTENTS contents , --컬럼 추가 혹은 삭제 
                 NVL(A.TARGET_YN,'X') targetYn
            FROM T_ST_CHILD A 
 LEFT OUTER JOIN T_ST B 
              ON A.P_SEQ = B.SEQ
           WHERE A.USE_YN = 'Y' 
        ORDER BY B.ST_NAME

쓰지 않는 칼럼의 경우 삭제하면 됩니다.

혹은 필요에 따라 A테이블에 칼럼을 추가하고 쓰실 수 있습니다.

 

 

<참조사이트>

https://forwe.tistory.com/9

 

 

 

반응형

댓글