ORA-00936: 누락된 표현식입니다. (ORA-00936: missing expression)

'ORA-00936: missing expression' 오류를 해결해 보도록 합시다. 번역에서도 볼 수 있듯이 말 그대로 '누락된 표현'이 문제인데요, 작성한 쿼리가 예상치 않게 끝난 경우에 발생하는 경우가 많습니다. 🙂

ORA-00936: 누락된 표현식입니다.

ORA-00936 오류의 공통적인 원인은 SQL 구문에서 표현이 누락되었거나 잘못된 구문으로 인해 발생합니다. 특히, 다음과 같은 경우에 발생할 수 있습니다. 살펴보도록 할게요. 🙂

SELECT 절에서 콤마

주로 SELECT 구문에서 컬럼 이름 사이에 콤마가 잘못 사용하는 경우에 'ORA-00936: 누락된 표현식입니다.' 오류가 발생할 수 있습니다. SELECT 절의 마지막에 불필요한 콤마가 있어 오류가 발생하는 예제를 살펴보겠습니다.

SELECT EMPNO, ENAME, JOB,
  FROM EMP
 WHERE DEPTNO = 10;

ERROR at line 1:
ORA-00936: missing expression

FROM 앞에 콤마를 실수로 하나 추가하였는데요, 이 때에 발생할 수 있습니다. 콤마 다음에 다른 컬럼을 예상했는데, FROM 키워드가 왔기에 '누락된 표현'이 되는 것이지요. 올바르게 수정하면 다음과 같습니다.

SELECT EMPNO, ENAME, JOB
  FROM EMP
 WHERE DEPTNO = 10;

     EMPNO ENAME                JOB
---------- -------------------- ------------------
      7782 CLARK                MANAGER
      7934 MILLER               CLERK
      7839 KING                 PRESIDENT

WHERE 절이 잘못 작성된 경우

조건을 덧붙이기 위해 WHERE 절을 사용했는데, 이후에 조건 표현을 입력하지 않는 경우에 발생할 수 있습니다.

SELECT * FROM EMP WHERE;

ERROR at line 1:
ORA-00936: missing expression

조건이 필요 없다면 WHERE 절을 지워야 할 것이며, 조건이 필요하다면 컬럼 표현을 덧붙여야 할 것입니다.

SELECT * FROM EMP WHERE 0 = 0;

14 rows selected.

INSERT 할 때에 콤마

INSERT VALUES 절을 사용할 때에, 나열한 컬럼에 콤마를 누락하는 경우에 발생할 수 있습니다.

--콤마가 맨 끝에 있는 경우
INSERT INTO EMP (EMPNO, ENAME) VALUES (9999,);

ERROR at line 1:
ORA-00936: missing expression
--콤마가 맨 앞에 있는 경우
INSERT INTO EMP (EMPNO, ENAME) VALUES (,9999);

ERROR at line 1:
ORA-00936: missing expression

컬럼 리스트를 가져온 다음에 '콤마 + 컬럼 이름'을 가져온다든지, 프로그래밍 방식으로 시도할 때에 가끔 발생할 수 있어요. 아니면 의도치 않은 SQL인젝션 때문에 발생하기도 할 것입니다.

SELECT 테이블 별칭 누락

테이블을 조회할 때에 애스터리스크 이외에 별도의 컬럼을 입력하는 경우, 별칭이 필요할 텐데요, 누락하는 경우에 발생할 수 있습니다.

SELECT EMPNO, * FROM EMP;

ERROR at line 1:
ORA-00936: missing expression

올바른 예시

SELECT EMPNO, EMP.* FROM EMP;

14 rows selected.
SELECT EMPNO, TA.* FROM EMP TA;

14 rows selected.

ORA-00936: missing expression

이와 같이 SQL 구문에서 표현식을 올바르게 작성하면 'ORA-00936: missing expression' 오류를 피할 수 있습니다. 쿼리를 작성할 때는 항상 컬럼 이름과 콤마를 주의 깊게 확인하세요. 예제에서 다룬 것 이외의 사유로 발생할 수도 있으니, 자세히 살펴보면 쉽게 해결할 수 있을 것입니다. 🙂

댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗