TO_DATE('17-DEC-1980', 'DD-MON-YYYY'), 800, NULL, 20)
*
3행에 오류:
ORA-01843: 지정한 월이 부적합합니다. 원인을 검색해 본 결과
NLS_DATE_FORMAT이 맞지 않아서 생기는 오류였다. 위의 예제 테이블 생성(sql)에서의 NLS_DATE_FORMAT은 'DD-MON-YYYY' 인데, 시스템의 NLS_DATE_FORMAT은 다른 형식으로 설정되어 있어서 오류가 생겼다.(이 글을 작성한 후 꽤 시간이 지나고 나서 알았지만 위의 오류의 정확한 원인은 아래의 NSL_LANGUAGE 설정 문제였다. NLS_DATE_FORMAT의 설정과는 무관한 문제였다.)
NLS_DATE_FORMAT의 확인은 다음의 명령어로 알아볼 수 있다.
select sysdate from dual;
NLS_DATA_FORMAT을 변경하는 방법은 다음과 같다.
alter session set nls_date_format='DD-MON-YYYY';
이렇게 수정해 주었음에도 불구하고,
에러가 났는데 원인은
입력하려는 데이터의 DATE 타입은 영문 기준인데, 현재 설정되어 있는 NLS_LANGUAGE가 KOREAN으로 설정되어 있어기 때문이다. DATE 타입이 영문으로 표기하면, 'DD-MON-YYYY' 의 경우 '22-MAR-2007'과 같은 형태가 되지만, 한글로 표기하면 '22-3월 -2007'과 같은 형태가 되기 때문에 오류가 생기는 것이였다.
다음의 명령어로 NLS_LANGUAGE를 AMERICAN으로 변경해주고 나서야 정상적으로 예제 테이블 생성 파일(demobld.sql)을 실행(?) 할 수 있었다.
alter session set nls_language='AMERICAN';