[개발] 프로그램 지식

[ORACLE] ORA-00904: "Invalid Identifier" 오류 해결 방법

  • -
반응형

🚨 ORA-00904: "Invalid Identifier" 오류 해결 방법

Oracle SQL에서 "ORA-00904: Invalid Identifier" 오류는 **잘못된 식별자(컬럼명, 테이블명, 함수명 등)를 사용했을 때** 발생하는 오류입니다. 이 오류가 발생하면 SQL 문이 실행되지 않고, 데이터베이스가 식별할 수 없는 항목이 있다는 것을 의미합니다.

ORA-00904 오류가 발생하는 주요 원인은 다음과 같습니다.

  • ❌ 존재하지 않는 컬럼을 사용함
  • ❌ 대소문자 구분 문제
  • ❌ 예약어(Reserved Word)를 컬럼명으로 사용함
  • ❌ 따옴표("")를 잘못 사용함
  • ❌ 컬럼명에 특수 문자 또는 공백 포함
  • ❌ 잘못된 함수 또는 연산자 사용
SELECT emp_id, emp_name, salary FROM employees;

👆 테이블 employeesemp_name이라는 컬럼이 없으면 오류 발생!

실제 존재하는 컬럼명을 사용해야 합니다. 예를 들어, 컬럼명이 employee_name이라면 아래처럼 수정해야 합니다.

SELECT emp_id, employee_name, salary FROM employees;

Oracle은 일반적으로 **컬럼명을 대문자로 저장**합니다. 하지만, 테이블 생성 시 따옴표를 사용하여 컬럼을 소문자로 정의한 경우, SQL에서도 반드시 따옴표를 사용해야 합니다.

SELECT Emp_ID FROM employees;

👆 컬럼명이 **EMP_ID**로 저장되어 있으면, Oracle은 Emp_ID를 찾지 못하여 오류를 발생시킵니다.

컬럼명을 정확하게 사용하세요.

SELECT EMP_ID FROM employees;

또는 컬럼을 소문자로 저장했다면, 반드시 따옴표를 사용해야 합니다.

SELECT "Emp_ID" FROM employees;

Oracle에서 **DATE, USER, NUMBER 등과 같은 예약어(Reserved Word)를 컬럼명으로 사용하면 오류가 발생**합니다.

CREATE TABLE employees ( ID NUMBER, NAME VARCHAR2(100), DATE DATE -- ❌ 예약어 사용으로 오류 발생 );

예약어 대신 의미 있는 컬럼명을 사용하세요.

CREATE TABLE employees ( ID NUMBER, NAME VARCHAR2(100), hire_date DATE );
SELECT "SALARY" FROM employees;

👆 컬럼명이 SALARY(대문자)로 저장되어 있다면, "SALARY"를 사용하면 오류가 발생할 수 있습니다.

따옴표를 사용하지 않거나, 정확한 컬럼명을 사용하세요.

SELECT SALARY FROM employees;
CREATE TABLE employees ( "Employee Name" VARCHAR2(100) -- ❌ 공백 포함으로 오류 발생 가능 );

공백을 포함하지 말고, _ 같은 대체 문자를 사용하세요.

CREATE TABLE employees ( employee_name VARCHAR2(100) );

ORA-00904 오류를 방지하려면 다음 사항을 항상 체크하세요.

  • 실제 존재하는 컬럼명인지 확인 (DB에서 DESCRIBE table_name; 실행)
  • 대소문자 일관성 유지 (소문자로 저장한 컬럼은 따옴표 사용 필수)
  • 예약어 사용 금지 (DATE, USER, NUMBER 등 사용 금지)
  • 공백이나 특수 문자 포함하지 않기 (언더바(_) 활용)

"ORA-00904: Invalid Identifier" 오류는 **잘못된 컬럼명, 대소문자 문제, 예약어 사용, 특수 문자 포함** 등의 이유로 발생합니다. 오류를 해결하려면 **정확한 컬럼명을 사용하고, SQL 문법을 올바르게 적용하는 것이 중요합니다.**

반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.