ORA-22814: attribute or element value is larger than specified in type 해결하기

ORA-22814: attribute or element value is larger than specified in type 오류는 사용자 정의 데이터 타입에 정의된 속성 또는 요소의 값이 타입에서 지정한 크기보다 큰 경우에 발생합니다. 이 오류가 발생하면 데이터가 타입의 제한을 초과하여 저장을 시도하였다는 것을 뜻하기에 해당 부분을 점검하면 해결하실 수 있답니다.

ORA-22814: attribute or element value is larger than specified in type

ORA-22814 attribute or element value is larger than specified in type

ORA-22814 오류가 발생할 수 있는 간단한 예제를 준비해 보았습니다.

Type

예를 들어, 다음과 같이 사번(EMPNO)과 사원명(ENAME)을 가지는 오브젝트 타입을 생성해 보겠습니다. 사용자 정의 데이터 타입이라고도 합니다. 특징은 ENAME은 VARCHAR2(10)으로 가변길이를 최대 10바이트까지 저장하도록 진행하겠습니다.

CREATE OR REPLACE TYPE EMP_TYPE AS OBJECT
                  (EMPNO NUMBER, ENAME VARCHAR2 (10));

Create

이제 데이터 타입을 사용하여 테이블을 생성해보겠습니다.

CREATE TABLE EMP_TABLE (EMP_COL EMP_TYPE);

Insert

이제 값을 인서트 해보겠습니다. 타입에 지정된 속성의 크기를 초과하는 값을 넣은 경우, 어떻게 되는지 확인해 보도록 하겠습니다.

INSERT INTO EMP_TABLE (EMP_COL)
         VALUES (EMP_TYPE (9999, 'Beomsang. Nice to meet you.'));
ERROR at line 1:
ORA-22814: attribute or element value is larger than specified in type

위의 인서트 쿼리에서 'Beomsang. Nice to meet you.' 값은 ENAME 컬럼의 크기인 10바이트를 초과하므로, 이 쿼리를 실행하면 ORA-22814: attribute or element value is larger than specified in type 오류가 발생하게 된답니다.

ORA-22814 해결하기

이 오류를 해결하려면 사용자 정의 데이터 타입에 지정된 크기를 초과하지 않도록 값을 검증하거나, 타입을 수정하여 크기를 늘리는 등의 방법을 고려해 주십시오.

댓글