ORA-01843: 无效的月份

来源:互联网 发布:命理师 知乎 编辑:程序博客网 时间:2024/05/01 14:36
执行下边的脚本
CREATE TABLE MYEMP
 ( EMP_ID        NUMBER,
   EMP_NAME      VARCHAR2(10),
   SAL           NUMBER,
   Joined_date   DATE,
   DEPT_NO       NUMBER);
INSERT INTO MYEMP VALUES (3, 'THREE', 1500, To_Date('01-MON-2007','DD-MON-YYYY'), 10);
报:ORA-01843: 无效的月份

如果把Insert语句改成
INSERT INTO MYEMP VALUES (2, 'TWO',   2000, To_Date('01-01-2005','DD-MM-YYYY'), 20);
Insert语句就能成功执行

查看nls_date_language参数,发现这个参数值为NULL
SELECT * FROM v$parameter WHERE name = 'nls_date_language';

把这个参数改成AMERICAN
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

再次执行
INSERT INTO MYEMP VALUES (3, 'THREE', 1500, To_Date('01-MON-2007','DD-MON-YYYY'), 10);
问题解决