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와 같은 내장 함수 명도 컬럼명으로 인식하기도 해서 구문 에러로 인식되지 않습니다.
큰따옴표 사용 여부, 내장 함수 이름을 잘 살펴보면 해결할 수 있는 에러입니다.
'Dev. Cookbook > SQL, Oracle, MariaDB' 카테고리의 다른 글
[MariaDB] MariaDB 10.1, 10.2 시퀀스 기능 구현 (0) | 2022.11.05 |
---|---|
[MariaDB,MySQL] 버전 별 사용자 계정 비밀번호 변경 방법 (0) | 2022.11.04 |
[Oracle] ORA-08002: 시퀀스 xxx.CURRVAL은 이 세션에서는 정의 되어 있지 않습니다 (0) | 2022.05.27 |
[Oracle] sys, system 계정 비밀번호 재설정 방법 (0) | 2022.05.24 |
[Oracle] Select count(*), count(1), count(column_name), count(DISTINCT column_name) 차이점 (0) | 2022.05.12 |
댓글