본문 바로가기
디버깅 로그

[Oracle SQL] ORA-00904: : invalid identifier 원인 및 해결방법

by 그녀는 행복한 개발자 홍씨 (DEVELOPER_HONG) 2021. 5. 2.

오류 발생 상황 및 원인

ORA-00904: : invalid identifier
00904. 00000 -  "%s: invalid identifier"
☞ 컬럼명에 오라클 예약어를 사용하여 오류가 발생함


오류 해결 방법

오라클 예약어가 아님을 알려주기 위해 큰 따옴표로 감싸주거나
오라클 예약어가 아닌 다른 컬럼명으로 바꾸기

※ 큰 따옴표 방법을 선택할 경우 향후 모든 쿼리문에서 큰 따옴표로 감싸줘야 하기 때문에 번거롭습니다.
반드시 그 컬럼명을 사용해야 하는 것이 아니라면 오라클 예약어 외의 다른 이름을 사용하시기를 권장합니다.


(참고) 오라클 예약어 목록

https://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_keywd.htm#i690190

 

Oracle Database Reserved Words

475/479 D Oracle Database Reserved Words This appendix lists Oracle SQL reserved words. Words followed by an asterisk (*) are also ANSI reserved words. Note: In addition to the following reserved words, Oracle uses system- generated names beginning with "S

docs.oracle.com


그 외 ORA-00904 오류의 원인

ORA-00904 오류는 위와 같이 오라클 예약어를 사용한 경우 외에도

아래와 같은 경우에 발생할 수 있습니다.

 

1) SQL문이 부적절한 컬럼명을 가지고 있을 때

SQL에서 컬럼명은 아래의 기준을 충족해야 합니다.

 

① 컬럼명은 오라클 예약어가 아니어야 함

② 컬럼명의 첫 글자는 문자로 시작해야 함

③ 컬럼명은 30자 이하의 길이여야 함

④ 컬럼명에 특수기호는 _ $ # 만 포함할 수 있음

 

2) SQL문에 존재하지 않는 컬럼명이 있을 때

이러한 경우는 컬럼명에 오타가 있을 가능성이 높습니다.

 

(참고)

https://www.tekstream.com/resource-center/ora-00904-invalid-identifier/

 

ORA-00904: invalid identifier | TekStream

Error Ora-00904 means you are attempting to execute an SQL statement that either has an invalid column name or a column name which does not currently exist.

www.tekstream.com

댓글