2

我正在从 C# .NET 应用程序插入 Oracle 数据库。失败的查询类似于:

INSERT INTO staging (create_date) VALUES ('16-Nov-1999')

当我从 SQL Navigator 运行它时,它运行良好。通过.NET,数据库抛出:

ORA-01858: a non-numeric character was found where a numeric was expected

我运行了一些测试用例,并确认这是导致异常的年份。“1999 年 12 月 31 日”之后的任何内容都运行良好。

4

2 回答 2

7

在提交要存储为 DATE 的值时,最好使用TO_DATE 函数:

INSERT INTO staging 
   (create_date) 
VALUES 
   (TO_DATE('16-Nov-1999', 'DD-MON-YYYY'))
于 2010-11-10T20:23:39.203 回答
0

问题在于使用通用 System.Data.OleDB 提供程序。Oracle 特定的 System.Data.OracleClient 没有此问题。

于 2010-11-11T16:24:31.073 回答