본문 바로가기
IT

ORA-00917 : 쉼표 누락 에러, 원인은 쉼표만이 아니다

by 샤나엘 2026. 4. 8.
반응형

 

ORA-00917 : 쉼표 누락 에러, 원인은 쉼표만이 아니다

ORA-00917 : missing comma 에러는 SQL 문에서 쉼표가 있어야 할 위치에 없을 때 발생합니다. 하지만 실제로는 쉼표와 무관한 문법 실수에서도 자주 나타납니다. 이 글에서는 ORA-00917의 진짜 원인들을 상황별로 정리합니다.

 

ORA-00917


ORA-00917 에러란?

ORA-00917은 SQL 파서가 쉼표(,)가 있어야 할 자리에 다른 토큰을 만났을 때 발생하는 에러입니다.

 

ORA-00917 에러란?

 

ORA-00917 : missing comma
(쉼표가 누락되었습니다)

이 에러는 단순히 쉼표를 빠뜨린 경우뿐 아니라, 별칭(Alias) 키워드 실수, 데이터 타입 오류, 예약어 충돌 등에서도 발생합니다. 오라클이 구문을 해석하다가 "여기에 쉼표가 와야 하는데 다른 게 있다"고 판단하기 때문입니다.


주요 발생 원인 5가지

번호 원인 설명
1 SELECT 절에서 쉼표 누락 컬럼 나열 시 쉼표 빠뜨림
2 별칭에 예약어 사용 AS 없이 예약어를 별칭으로 사용
3 INSERT VALUES에서 쉼표 누락 값 나열 시 쉼표 빠뜨림
4 CREATE TABLE 컬럼 정의 오류 데이터 타입 누락, 잘못된 키워드
5 별칭에 작은따옴표 사용 별칭을 작은따옴표로 감싼 경우

원인 1 : SELECT 절에서 쉼표 누락

가장 직관적인 원인입니다. SELECT 절에서 여러 컬럼을 나열할 때 사이에 쉼표를 빠뜨리면 ORA-00917이 발생합니다.

 

SELECT 절에서 쉼표 누락

 

에러 발생 예시 :

-- 컬럼 사이 쉼표 누락
SELECT employee_id first_name last_name FROM employees;
-- ORA-00917

-- 함수 결과와 다음 컬럼 사이 쉼표 누락
SELECT COUNT(*) department_id FROM employees GROUP BY department_id;

해결법 :

SELECT employee_id, first_name, last_name FROM employees;

SELECT COUNT(*) AS cnt, department_id FROM employees GROUP BY department_id;
각 컬럼을 한 줄씩 작성하면 쉼표 누락을 쉽게 발견할 수 있습니다.

원인 2 : 별칭에 예약어 사용

컬럼 별칭으로 오라클 예약어를 사용하면 ORA-00917이 발생할 수 있습니다. 오라클이 별칭이 아닌 키워드로 해석하기 때문입니다.

에러 발생 예시 :

-- 별칭 'date'는 예약어
SELECT hire_date date FROM employees;
-- ORA-00917 (date를 별칭이 아닌 키워드로 인식)

-- 별칭 'number'는 예약어
SELECT salary number FROM employees;

해결법 :

-- 방법 1 : AS + 큰따옴표
SELECT hire_date AS "date" FROM employees;

-- 방법 2 : 예약어가 아닌 별칭 사용 (추천)
SELECT hire_date AS hire_dt FROM employees;
별칭에 예약어를 꼭 사용해야 한다면 큰따옴표("")로 감싸야 합니다. 가급적 예약어가 아닌 이름을 사용하세요.

원인 3 : INSERT VALUES에서 쉼표 누락

INSERT 문의 VALUES 절에서 값 사이에 쉼표를 빠뜨리면 ORA-00917이 발생합니다.

 

INSERT VALUES에서 쉼표 누락

 

 

에러 발생 예시 :

-- 값 사이 쉼표 누락
INSERT INTO employees (employee_id, first_name, salary)
VALUES (100 'John' 5000);
-- ORA-00917

해결법 :

INSERT INTO employees (employee_id, first_name, salary)
VALUES (100, 'John', 5000);

원인 4 : CREATE TABLE 컬럼 정의 오류

CREATE TABLE에서 데이터 타입을 누락하거나 잘못된 키워드를 사용하면 ORA-00917이 발생합니다.

에러 발생 예시 :

-- 데이터 타입 누락
CREATE TABLE test_tbl (
    id,
    name VARCHAR2(50)
);
-- id 컬럼에 데이터 타입이 없음 → ORA-00917

해결법 :

CREATE TABLE test_tbl (
    id NUMBER,
    name VARCHAR2(50)
);

원인 5 : 별칭에 작은따옴표 사용

오라클에서 컬럼 별칭에 작은따옴표('')를 사용하면 ORA-00917이 발생합니다. 별칭에 한글이나 특수문자를 쓰려면 큰따옴표("")를 사용해야 합니다.

별칭에 작은따옴표 사용

 

에러 발생 예시 :

-- 별칭에 작은따옴표 사용 (불가)
SELECT salary AS '급여' FROM employees;
-- ORA-00917

해결법 :

-- 별칭은 큰따옴표 사용
SELECT salary AS "급여" FROM employees;

-- 영문 별칭은 따옴표 불필요
SELECT salary AS sal FROM employees;
용도 올바른 따옴표 예시
문자열 값 작은따옴표 '' WHERE name = '홍길동'
컬럼 별칭 큰따옴표 "" SELECT sal AS "급여"
테이블 별칭 따옴표 없음 FROM employees e

자주 묻는 질문 (FAQ)

Q1. 쉼표를 다 넣었는데 ORA-00917이 발생합니다.

별칭에 예약어를 사용했거나, 작은따옴표로 별칭을 지정한 경우일 수 있습니다. 별칭 부분을 확인하세요.

 

Q2. ORA-00917과 ORA-00923(FROM 키워드 누락)의 차이점은?

둘 다 SELECT 절의 문법 오류에서 발생하지만, ORA-00917은 쉼표가 와야 할 자리에 다른 게 있을 때, ORA-00923은 FROM 키워드를 찾지 못할 때 발생합니다. 원인이 비슷하여 같은 실수에서 버전에 따라 다른 에러가 나올 수 있습니다.

 

Q3. 긴 SELECT 절에서 쉼표 누락을 쉽게 찾는 방법은?

각 컬럼을 한 줄에 하나씩 작성하면 쉼표 누락을 시각적으로 쉽게 발견할 수 있습니다.


핵심 정리

점검 사항 확인 방법
SELECT 쉼표 컬럼 사이에 쉼표(,)가 있는지 확인
별칭 예약어 예약어를 별칭으로 쓸 때 큰따옴표 사용
INSERT 쉼표 VALUES 값 사이, 컬럼 목록 사이 쉼표 확인
CREATE TABLE 모든 컬럼에 데이터 타입이 지정되었는지 확인
별칭 따옴표 별칭은 큰따옴표(""), 문자열은 작은따옴표('')
핵심 정리
태그 : ORA-00917, ORA-00917 해결, ORA-00917 원인, missing comma, 쉼표 누락, 오라클 에러, 오라클 쉼표 에러, 오라클 별칭 에러, 오라클 예약어, 오라클 INSERT 에러, 오라클 SELECT 에러, 오라클 CREATE TABLE, 오라클 트러블슈팅, 데이터베이스 에러, SQL 구문 에러
반응형

댓글