Function ora-00904 부적합한 식별자 - function ora-00904 bujeoghabhan sigbyeolja

코딩/Oracle

오라클 sql ORA-00904 : 부적합한 식별자 invalid identifier

it 끄적이기 2019. 8. 23. 23:46

java.sql.SQLException : ORA-00904 : 열명이 부적합합니다.

위와 같이 에러가 발생 하는 원인은

1. 존재하지 않는 열 이름을 적었다.

2. 정의된 열 이름과 대소문자가 일치하지 않는 경우

3. 작은 따옴표와 큰따움표 사용을 잘못 하였거나

4. 열 이름에 특수문자가 들어갔거나

5. 열 이름에 Oracle 예약어를 사용 하였거나.

- 예약어 ex) alter check, delete, drop 등등이 있다.

해결방법으로는

1. 해당 열에 테이블이 존재하는지 확인을한다.

2. 큰 따옴표로 묶은 열 이름은 대소문자를 구분하므로 확인을 해준다.

3. 작은따옴표로 값을 묶으면 값으로 취급되지만 큰 따옴표로 값을 묶으면 객체 이름으로 처리되므로 확인을 해줘야한다.

4. 열 이름 앞에 숫자나 기호를 사용하고 있지 않은 지 확인 후 수정을 해줘야 한다.

5. 열 이름에 예약어를 사용하고 있지 않은지 확인 후 수정을 해준다.

참고로 "바인드 변수가 부족합니다." OR "일부 변수가 결합되지 않습니다." 라는 에러메세지는

- 조건절이 갯수보다 값을 대입하는 바인드 변수가 적은 경우입니다.

- 쉽게 말해서 방이 5개가 있고, 그방에 전부 한명씩 들어가야 하는데 하나의 방에 덜들어가

4개의 방에만 들어가 있을경우 입니다.

마지막으로 오타가 없는지 확인을 해줍시다.^^

DB

ORACLE 예약어(ORA-00904 부적합한 식별자)

Yoon0120 2017. 4. 28. 10:29

ORACLE DB TABLE 생성시 TABLE명이나 COLUMN 명에 ORACLE 예약어가 포함되면 ORA-00904 부적합한 식별자라는 오류가 뜬다.

근데 부적합한 식별자라는 말만 있지 왜 부적합한지라던가 하는 이유는 잘 나와있지 않다. 구글검색해보면 여러가지 결과가 나오는데 대부분이 문법오류다. 

즉, 콤마나 띄어쓰기 등의 문제로 문법오류가 나서 안되는 경우가 대부분인데 본인의 경우에는 오라클 예약어를 쓰면 안된다는(안된다기 보다는 제약이 있다) 사실을 모르고 테이블명이나 컬럼명에 예약어를 사용하여 테이블 생성이 안되었다.

예약어를 컬럼명이나 테이블명에 사용하고 싶으면 큰따옴표("")로 묶어주면 된다.

CREATE TABLE "SELECT"(..........);    와 같은 방식으로 하면 된다

개인적인 결론으론 되도록이면? 아니 아예 그냥 안쓰는게 낫다는 생각이다.

아래의 예약어 참고하면 된다.

ACCESS
ADD *
ALL *
ALTER *
AND *
ANY *
AS *
ASC *
AUDIT
BETWEEN *
BY *
CHAR *
CHECK *
CLUSTER
COLUMN
COMMENT
COMPRESS
CONNECT *
CREATE *
CURRENT *
DATE *
DECIMAL *
DEFAULT *
DELETE *
DESC *
DISTINCT *
DROP *
ELSE *
EXCLUSIVE
EXISTS
FILE
FLOAT *
FOR *
FROM *
GRANT *
GROUP *
HAVING *
IDENTIFIED
IMMEDIATE *
IN *
INCREMENT
INDEX
INITIAL
INSERT *
INTEGER *
INTERSECT *
INTO *
IS *
LEVEL *
LIKE *
LOCK
LONG
MAXEXTENTS
MINUS
MLSLABEL
MODE
MODIFY
NOAUDIT
NOCOMPRESS
NOT *
NOWAIT
NULL *
NUMBER
OF *
OFFLINE
ON *
ONLINE
OPTION *
OR *
ORDER *
PCTFREE
PRIOR *
PRIVILEGES *
PUBLIC *
RAW
RENAME
RESOURCE
REVOKE *
ROW
ROWID
ROWNUM
ROWS *
SELECT *
SESSION *
SET *
SHARE
SIZE *
SMALLINT *
START
SUCCESSFUL
SYNONYM
SYSDATE
TABLE *
THEN *
TO *
TRIGGER
UID
UNION *
UNIQUE *
UPDATE *
USER *
VALIDATE
VALUES *
VARCHAR *
VARCHAR2
VIEW *
WHENEVER *
WHERE
WITH *

//docs.oracle.com/cd/B19306_01/server.102/b14200/ap_keywd.htm#i690190

IT 개발/에러

[Oracle] ORA-00904 : 부적합한 식별자 invalid identifier

큐그 2017. 11. 6. 16:16

ORA-00904 : 부적합한 식별자 invalid identifier

1. 원인: 입력된 열 이름이 누락되었거나 잘못 되었을 경우 발생.

1-1. 존재하지 않는 열 이름을 지정함.

1-2. 정의된 열 이름과 대소문자가 일치하지 않는 경우.

1-3. 작은 따옴표(')와 큰 따옴표(") 사용 방법의 오류.

1-4. 열 이름에 특수 문자 사용.

1-5. 열 이름에 Oracle 예약어 사용.

2. 해결 방법

2-1. 해당 열이 테이블에 존재하는지 확인.

2-2. 큰 따옴표로 묶인 열 이름은 대소문자를 구분하므로 확인.

2-3. 작은 따옴표(')로 값을 묶으면 값으로 취급되지만 큰 따옴표(")로 값을 묶으면 객체 이름으로 처리되므로 확인.

2-4. 열 이름 앞에 숫자나 기호를 사용하고 있지 않은 지 확인 후 수정.

2-5. 열 이름에 예약어를 사용하고 있지 않은지 확인 후 수정. 

ORA-00904 invalid identifier

1. Cause: The input column name is missing or invalid.

1-1. Specifies a nonexistent column name.

1-2. The column name defined does not match the case.

1-3. Error in how to use single quotes (') and double quotes (").

1-4. Use special characters in column names.

1-5. Use Oracle reserved words for column names.

2. Solution

2-1. Make sure the column exists in the table.

2-2. Column names enclosed in double quotation marks are case sensitive, so check.

2-3. Enclosing a value with a single quotation mark (') is treated as a value, but enclosing the value with a double quotation mark (") will treat it as an object name.

2-4. Make sure that you do not use a number or symbol before the column name, and then fix it.

2-5. Make sure column names do not use reserved words.

Toplist

최신 우편물

태그