본문 바로가기
Database/Oracle

[ORACLE] ORA-00936 : 오류의 정확한 원인과 실무 적용 해결 전략

by Papa Martino V 2025. 7. 27.
728x90

ORA-00936 오류의 정확한 원인과 실무 적용 해결 전략
[ORACLE] ORA-00936

 

오라클 SQL을 작성하다 보면 예상치 못하게 마주하는 오류 중 하나가 ORA-00936: missing expression입니다. 이 오류는 단순해 보이지만, 실제로는 SQL 구문 내 문법적인 미세한 실수에서 비롯되는 경우가 많아 빠른 디버깅이 어렵습니다. 본 글에서는 단순한 문법 오류를 넘어 실제 실무에서 자주 마주치는 ORA-00936 오류 상황을 다각도로 분석하고, 이를 예방하고 해결할 수 있는 전략을 체계적으로 제공합니다. 실무 담당자가 반드시 이해하고 있어야 할 실전 중심의 해결법을 위주로 정리했으며, 각 사례마다 코드 예제도 함께 제공합니다.

1. ORA-00936 오류란?

ORA-00936 오류는 오라클에서 필수적인 표현식(expression)이 누락되었을 때 발생합니다. 즉, SQL 구문의 특정 위치에 값 또는 연산이 있어야 하는데, 해당 위치가 비어 있거나 잘못된 경우 발생하는 오류입니다.

오류 메시지: ORA-00936: missing expression

2. 오류 발생의 전형적인 패턴

유형 원인 예시
SELECT 누락 SELECT 키워드 다음에 컬럼명이 없음 SELECT FROM employees;
컬럼명 누락 표현식 자리 비워짐 SELECT , salary FROM employees;
잘못된 괄호 사용 서브쿼리에서 표현식이 없음 SELECT ( FROM dual;
연산자 오류 연산자 앞뒤 값 중 하나가 누락 SELECT salary + FROM employees;

3. 실무에서 자주 발생하는 ORA-00936 사례 분석

3-1. SELECT 문에서 컬럼 누락


-- 잘못된 SQL
SELECT FROM employees;
-- 오류 발생: ORA-00936: missing expression

해결: SELECT 다음에 반드시 조회할 컬럼이나 표현식이 있어야 합니다.


-- 올바른 SQL
SELECT * FROM employees;

3-2. 리스트 중 콤마 오류


-- 잘못된 SQL
SELECT first_name, , salary FROM employees;

해결: 콤마 사이에 비어 있는 컬럼 위치를 제거하거나 수정해야 합니다.


-- 올바른 SQL
SELECT first_name, salary FROM employees;

3-3. IN 또는 VALUES 절에서 표현식 누락


-- 잘못된 SQL
SELECT * FROM employees WHERE department_id IN ();

해결: IN 절 내에는 반드시 하나 이상의 값 또는 서브쿼리가 존재해야 합니다.


-- 올바른 SQL
SELECT * FROM employees WHERE department_id IN (10, 20, 30);

3-4. 연산자 사용 시 피연산자 누락


-- 잘못된 SQL
SELECT salary + FROM employees;

해결: 연산자 앞뒤에 올바른 값 또는 컬럼이 있어야 합니다.


-- 올바른 SQL
SELECT salary + 1000 FROM employees;

4. 오류 예방을 위한 실전 전략

  • SQL 작성 시 SELECT, FROM, WHERE 절의 기본 틀을 우선 작성하고, 그 안을 채워나가는 방식 권장
  • SQL 툴의 하이라이팅 기능을 활용하여 문법 오류를 사전에 확인
  • IN, VALUES, 연산자 사용 시 항상 양쪽 피연산자 또는 항목의 존재 여부 확인
  • 자동 완성 기능(Auto-complete)을 활용하여 실수 가능성 최소화

5. 오류 발생 원인과 해결 방법 요약

오류 유형 발생 원인 해결 방법
SELECT 절 누락 SELECT 뒤에 컬럼명이 없음 SELECT 다음에 조회할 컬럼 지정
콤마 오류 컬럼 목록 중 공백 또는 불완전한 항목 콤마 위치 재검토 및 불필요한 공백 제거
서브쿼리 표현식 없음 () 안에 값 또는 서브쿼리 누락 IN/VALUES 절 내 표현식 추가
연산자 오류 연산자 앞 또는 뒤 값 없음 연산 양쪽 모두 피연산자 지정

6. SQL 작성 시 체크리스트

  1. SELECT 구문 내 누락된 표현식이 없는가?
  2. 모든 괄호는 짝이 맞는가?
  3. IN, VALUES 등의 리스트에 값이 포함되어 있는가?
  4. 연산자는 양쪽에 값 또는 컬럼이 존재하는가?
  5. 서브쿼리는 SELECT 구문으로 시작하는가?

7. 마치며

ORA-00936 오류는 사소한 실수로 인해 발생하지만, 원인을 정확히 이해하지 못하면 해결에 많은 시간이 소요될 수 있습니다. 실무에서 자주 발생하는 오류 유형을 습득하고, 예방 습관을 들이는 것이 중요합니다. 특히 자동화 도구에 의존하기보다는 SQL 문 자체의 구조를 숙지하고, 각 구문이 가지는 문법적 요구 사항을 체화하는 것이 오류를 줄이는 핵심입니다.

출처

728x90