当插入日期型的项目时,会出现英文缩写月份插入错误的问题
C:/Documents and Settings/yangxiujin>sqlplus system/xxxx@ora
SQL> desc sales_data;
名前 NULL? 型
----------------------------------------- -------- ---------------------------
TXN_ID NOT NULL NUMBER
PRODUCT_ID NUMBER
PROD_CATEGORY VARCHAR2(2)
CUSTOMER_ID VARCHAR2(10)
SALE_DATE DATE
SALE_QTY NUMBER
SALE_PRICE NUMBER
SQL> @c:/salse_date.sql
SP2-0310: ファイル"c:/salse_date.sql"をオープンできません。
SQL> @c:/sales_date.sql
4,413354981,'V','41',to_date('1117-Jan-02','YYYY-MON-DD'),1,12.95)
*
行3でエラーが発生しました。:
ORA-01843: not a valid month
1行が作成されました
-----------------------------------------------------------------------------------
ORA-01843错误发生。
SQL中,SQL语法:
INSERT INTO SALES_DATA
VALUES(
4,413354981,'V','41',to_date('1117-Jan-02','YYYY-MON-DD'),1,12.95);
INSERT INTO SALES_DATA
VALUES(
4,413354981,'V','41',to_date('1117-01-02','YYYY-MM-DD'),1,12.95);
语法没有问题。
是什么的问题呢?
C:/Documents and Settings/yangxiujin>set nls_lang
nls_lang=JAPANESE_JAPAN.JA16SJISTILDE
现在使用的字符集是日语字符集,对包含有月份‘Jan’的格式不支持。
需要做出如下修改才能插入带英语月份简写的日期
SQL> desc sales_data;
名前 NULL? 型
----------------------------------------- -------- ----------------------------
TXN_ID NOT NULL NUMBER
PRODUCT_ID NUMBER
PROD_CATEGORY VARCHAR2(2)
CUSTOMER_ID VARCHAR2(10)
SALE_DATE DATE
SALE_QTY NUMBER
SALE_PRICE NUMBER
SQL> @c:/salse_date.sql
SP2-0310: ファイル"c:/salse_date.sql"をオープンできません。
SQL> @c:/sales_date.sql
4,413354981,'V','41',to_date('1117-Jan-02','YYYY-MON-DD'),1,12.95)
*
行3でエラーが発生しました。:
ORA-01843: not a valid month
1行が作成されました。
SQL> exit
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。
C:/Documents and Settings/yangxiujin>set nls_lang
環境変数 nls_lang が定義されていません
C:/Documents and Settings/yangxiujin>
set nls_lang=AMERICAN_AMERICA.US7ASCII
C:/Documents and Settings/yangxiujin>set nls_lang
nls_lang=AMERICAN_AMERICA.US7ASCII
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> @c:/sales_date.sql;
1 row created.
1 row created.
SQL>
成功!!!!
成功!!!!
附
sales_date.sql
INSERT INTO SALES_DATA
VALUES(
4,413354981,'V','41',to_date('1117-Jan-02','YYYY-MON-DD'),1,12.95);
INSERT INTO SALES_DATA
VALUES(
4,413354981,'V','41',to_date('1117-01-02','YYYY-MM-DD'),1,12.95);
本文介绍了在使用Oracle数据库时遇到的日期格式插入错误ORA-01843,并提供了具体的解决方案。通过更改环境变量nls_lang中的字符集,使得能够正确识别并插入带有英文缩写月份的数据。
3万+

被折叠的 条评论
为什么被折叠?



