ORA-00904: 잘못된 식별자 오류 해결 방법
Oracle SQL을 작성하다 보면 아래와 같은 오류 메시지를 접한 적 있으신가요?
ORA-00904: "COLUMN_NAME": invalid identifier
이 오류는 SQL 문장에서 사용된 컬럼명, 함수명, 식별자가 Oracle에서 인식할 수 없는 경우 발생합니다. 초급부터 고급 개발자까지 자주 겪는 실수 중 하나이므로, 원인과 해결 방법을 확실히 알아두는 것이 중요합니다.
1. ORA-00904란?
ORA-00904 오류는 Oracle에서 SQL 문장의 식별자(identifier), 즉 컬럼명 또는 함수명
이 유효하지 않을 때 발생합니다.
오류 메시지 예시:
ORA-00904: "USERNAME": invalid identifier
2. 주요 발생 원인
- 📝 존재하지 않는 컬럼명을 사용
- ✍️ 컬럼명 오타 또는 대소문자 구분 오류
- 🔍 함수명을 잘못 입력하거나 괄호 누락
- ⚠️ 쌍따옴표로 정의된 컬럼명 사용 시 대소문자 구분
3. 해결 방법
✔️ 1. 컬럼명이 테이블에 존재하는지 확인
먼저 사용 중인 컬럼명이 테이블에 실제로 존재하는지 확인합니다:
SELECT column_name
FROM all_tab_columns
WHERE table_name = 'EMPLOYEES' AND owner = 'HR';
✔️ 2. 컬럼명 오타 수정
-- 잘못된 예
SELECT usernme FROM employees;
-- 수정된 예
SELECT username FROM employees;
✔️ 3. 대소문자 문제 해결
쌍따옴표(")를 사용하면 Oracle은 대소문자를 구분합니다.
-- 컬럼을 "UserName"으로 생성한 경우
SELECT "UserName" FROM users; -- OK
SELECT username FROM users; -- 오류 발생
✔️ 4. 함수명 오류 또는 괄호 생략
-- 잘못된 예 (함수 괄호 생략)
SELECT sysdate FROM dual; -- OK
SELECT sysdate; -- ORA-00904 오류 발생 가능
4. 예제 및 실습
예제 1: 컬럼명이 존재하지 않을 때
SELECT age FROM employees;
-- ORA-00904: "AGE": invalid identifier
해결: 테이블에 해당 컬럼이 존재하는지 확인
예제 2: 오타로 인한 오류
SELECT enamee FROM emp;
-- ORA-00904: "ENAMEE": invalid identifier
예제 3: 대소문자 구분
-- 컬럼을 "Email"로 만들었다면
SELECT Email FROM users; -- 오류
SELECT "Email" FROM users; -- 정상 작동
5. 예방 팁
- ✅ SQL Developer나 DB 툴을 통해 컬럼 목록 확인
- ✅ 테이블 이름과 컬럼명을 항상 대문자로 확인
- ✅ 쌍따옴표를 남용하지 않도록 주의
- ✅ 커밋된 스키마 구조와 실제 사용하는 쿼리가 일치하는지 점검
🔚 마무리
ORA-00904 오류는 Oracle SQL 초급자들이 흔히 겪는 실수이지만, 올바른 컬럼명과 함수명 확인만으로도 간단하게 해결할 수 있습니다.
오류 메시지 속 "COLUMN_NAME"
을 중심으로 테이블 구조를 점검하고, 대소문자나 쌍따옴표 문제도 함께 확인하세요!
도움이 되셨다면 댓글과 좋아요 부탁드립니다. 😊 Oracle SQL 오류 시리즈는 계속 업데이트 됩니다!
'ORACLE' 카테고리의 다른 글
ORA-00001 오류 해결 방법 | Oracle UNIQUE 제약 조건 위반 완전 정복 (0) | 2025.04.11 |
---|---|
ORA-01017 오류 해결 방법 | Oracle 로그인 실패 원인과 대처법 (0) | 2025.04.10 |
ORA-01722 오류 해결 방법 | Oracle 숫자 변환 오류 완벽 가이드 (0) | 2025.04.08 |
ORA-00942 오류 해결 방법 | Oracle 테이블 존재하지 않음 오류 해결 가이드 (0) | 2025.04.07 |
ORA-12560 오류 해결 방법 | Oracle TNS 프로토콜 어댑터 오류 완벽 가이드 (0) | 2025.04.06 |