이 글에서는 선언된 VARCHAR2 데이터 항목의 길이보다 더 긴 값을 설정할 경우의 오류에 대해서 알아 보겠습니다.
조사 환경
이 글은 “Windows10 Pro에서 무상으로 이용가능한 Oracle Database Express Edition 18c 설치하기” 글에서 작성한 XEPDB1 플러그인 데이터베이스(PDB) 환경에서 조사했습니다.
scott/tiger접속을 위해서는 “연습 데이터용 샘플 스키마 “SCOTT” 작성하기” 글을 참조하십시오.
그외 이하 환경에서도 연습할 수 있습니다.
Windows Server 2012 R2에서 Oracle Database 12.2.0.1.0 for Microsoft Windows x64 설치 하기
Windows Server 2019 에서 Oracle Database 19c for Microsoft Windows x64 설치 하기
오류 샘플
다음과 같이 VARCHAR2(10)으로 선언된 ENAME 항목에 15byte의 ‘LONG NAME SMITH‘ 값을 설정 하기에 오류가 발생합니다.
한글 오류 메시지
C:\>set nls_lang=KOREAN_KOREA.KO16MSWIN949
C:\>sqlplus scott/tiger@localhost/xepdb1
SQL> desc emp
Name Null? Type
--------- -------- -------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> INSERT INTO EMP VALUES (9999,'LONG NAME SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES (9999,'LONG NAME SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20)
*
1행에 오류:
ORA-12899: "SCOTT"."EMP"."ENAME" 열에 대한 값이 너무 큼(실제: 15, 최대값: 10)
영문 오류 메시지
C:\>set nls_lang=American_America.AL32UTF8
C:\>sqlplus scott/tiger@localhost:1521/XEPDB1
SQL> INSERT INTO EMP VALUES (9999,'LONG NAME SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES (9999,'LONG NAME SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20)
*
ERROR at line 1:
ORA-12899: value too large for column "SCOTT"."EMP"."ENAME" (actual: 15,
maximum: 10)
정상 샘플
ENAME 항목에 10byte 이내의 값 ‘SHORTNAME‘ 을 설정하면 정상 종료합니다.
SQL> INSERT INTO EMP VALUES (9999,'SHORTNAME','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
1 개의 행이 만들어졌습니다.