这是表格
CREATE TABLE Employee
(EmpID number(5) primary key,
SIN Number(9) Not null,
LastName Varchar2(25) Not null,
FirstName Varchar2(25),
Street Varchar2(30),
City Varchar2(25),
Province Char(2),
PostalCode Varchar2(7),
JobCode Number(4) Not null,
Foreign Key(JobCode) REFERENCES Job,
IncomeTax Char(1),
BirthDate Date,
HireDate Date,
JobCodeDate Date)
TABLESPACE users;
这是我想要插入的行,只有三个数值,所有这些都是数字,据我所见。
INSERT INTO Employee VALUES(97319,516303417,'Novak','Gerry','6803 Park Ave.','Moose Jaw','SK','S6H 1X7',3000,'N','24-Aug-86','07-Jul-03','07-Jul-03');
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected
答案 0 :(得分:1)
我认为问题在于日期列尝试使用此语法to_date('07-Jul-03','DD-MON-YY')
:
INSERT INTO Employee
VALUES(97319,516303417,'Novak','Gerry','6803 Park Ave.','Moose Jaw','SK','S6H 1X7',3000,'N',to_date('24-Aug-86', 'DD-MON-YY'),to_date('07-Jul-03','DD-MON-YY'),to_date('07-Jul-03','DD-MON-YY'));
SQL-Fiddle: http://sqlfiddle.com/#!4/0e9df/2
答案 1 :(得分:1)
alter SESSION set NLS_DATE_FORMAT = 'DD-Mon-YY';
我只需输入此内容,以便sql将在我的插入查询中正确执行日期格式
答案 2 :(得分:0)
INSERT语句中列出的字段顺序与Oracle期望它们的顺序之间可能存在差异。我建议再次尝试使用INSERT的完整语法(即在执行INSERT时指定字段名称)。这样,它就可以非常清楚正在进行的字段关联的价值。
这样的事情:
INSERT
INTO Employee (EmpID, SIN, LastName, FirstName, Street, City, Province, PostalCode, JobCode, IncomeTax, BirthDate, HireDate, JobCodeDate)
VALUES(97319,516303417,'Novak','Gerry','6803 Park Ave.','Moose Jaw','SK','S6H 1X7',3000,'N','1986-08-24','2003-07-07','2003-07-07');