2014-02-25 9 views
6

Ich habe beim Einfügen ein Problem festgestellt. Hier ist das Problem:ORA-01843: kein gültiger Monat: TO_DATE ('12 -JUN-02 ',' DD-MON-YY ')

INSERT INTO SALES_ORDER_A4 (ORDERNO , CLIENTNO , ORDERDATE , DELYADDR , SALESMANNO , DELYTYPE , BILLYN , DELYDATE, ORDERSTATUS) 
SELECT 'O19008' , 
     'C00005' , 
     to_date('24-MAY-02','DD-MON-YY'), 
     'Delhi' , 
     'S00004' , 
     'F' , 
     'N' , 
     to_date('26-MAY-02','DD-MON-YY') , 
     'In Process' 
FROM DUAL 
UNION ALL 
SELECT 'O19001' , 
     'C00001' , 
     to_date('12-JUN-02','DD-MON-YY') , 
     'Delhi' , 
     'S00001' , 
     'F' , 
     'N' , 
     to_date('20-JUN-02','DD-MON-YY') , 
     'In Process' 
FROM DUAL 
UNION ALL 
SELECT 'O19002' , 
     'C00002' , 
     to_date('25-JUN-02','DD-MON-YY'), 
     'Delhi' , 
     'S00002' , 
     'P' , 
     'N' , 
     to_date('27-JUL-02','DD-MON-YY') , 
     'Cancelled' 
FROM DUAL 

Ich habe eine Ausnahme bei Satz konfrontiert * to_date ('12 -Jun-02' , 'DD-MON-YY') *, dass:

ORA-01843: kein gültiger Monat

Mein Lehrer kann das Problem nicht finden, was ist das Problem hier?

+2

Was gibt 'select to_char (TO_DATE ('25 .06.2002 ',' DD.MM.YYYY '),' DD-MON-YY ') von Dual zurück? Wahrscheinlich ist nls_lang nicht auf Englisch eingestellt. – Mikhail

+0

http://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_options067.htm#OLADM408 –

Antwort

14

Dies ist vor allem, weil NLS_DATE_LANGUAGE nicht richtig eingestellt ist.

zuerst den Wert überprüfen, indem Sie:

select * from v$nls_parameters where parameter like '%DATE%' 

Wenn der Wert von NLS_DATE_LANGUAGE ist nicht American es dann ändern:

alter session set nls_date_language='American'; 

Und versuchen Sie es erneut.

+2

Guter Punkt. Das erklärt, warum es perfekt für mich funktioniert hat. –

+0

was tun, um die Anweisung auszuführen, ohne den nls_date_language-Wert zu ändern? –

Verwandte Themen