본문 바로가기
Dev. Cookbook/SQL, Oracle, MariaDB

[Oracle] ORA-00984: 열을 사용할 수 없습니다. "column not allowed here"

by breezyday 2022. 5. 27.

ORA-00984

: 열을 사용할 수 없습니다.

: "column not allowed here"

 

SQL 오류: ORA-00984: 열을 사용할 수 없습니다
00984. 00000 -  "column not allowed here"
*Cause:    
*Action:

 

SQL 구문에서 해당 컬럼에 적합하지 않은 값을 대입하려고 시도할 경우에 발생합니다.

 

  • SQL문에서 문자열에 작은따옴표( ' ) 대신 큰따옴표( " )를 사용한 경우
  • 내장 함수의 이름이 틀린 경우
  • 문자열을 입력해야 하는 데 작은따옴표를 잊어버린 경우

 

CREATE TABLE person (
    name      VARCHAR2(30),
    age       NUMBER(3),
    birthday  DATE
);

-- name 컬럼의 문자열에 작은따옴표가 없음.
INSERT INTO person VALUES(홍길동, 20, '1443-01-01');

-- name 컬럼의 문자열에 큰따옴표를 사용함.
INSERT INTO person VALUES("홍길동", 20, '1443-01-01');

-- age 컬럼의 숫자에 큰따옴표를 사용함.
INSERT INTO person VALUES('홍길동', "20", SYSDATE);

-- birthday 컬럼에 내장함수 이름을 잘못 사용함.
INSERT INTO person VALUES('홍길동', 20, SYSDAY);

 

-- age 컬럼에 작은따옴표를 사용한 경우 자동 형변환으로 INSERT가 성공함
INSERT INTO person VALUES('홍길동', '20', SYSDATE);

 

어떤 경우는 자동 형 변환이 이루어져서 성공하기도 합니다.


ORA-00984 에러코드는 주로 큰따옴표를 사용하는 경우 잘 발생합니다. SQL Developer에서는 구문 에러로 표시되지도 않습니다. 마찬가지로 SYSDATE와 같은 내장 함수 명도 컬럼명으로 인식하기도 해서 구문 에러로 인식되지 않습니다. 

 

큰따옴표 사용 여부, 내장 함수 이름을 잘 살펴보면 해결할 수 있는 에러입니다.

 

 

 

 

 

댓글