create table WeeklySaleReport
( ReportID varchar(20) primary key
, StartDate date
, EndDate date
, SaleAmount number (8,2)
, ComRate number (8,2)
, ComAmount number (8,2)
, EmployeeID int
, EName varchar(70)
, BrandID varchar(20)
, BName varchar(70)
, BSaleAmount number(8,2)
, TypeID varchar(20)
, TName varchar(20)
, TSaleAmount number(8,2)
, ESaleAmount number(8,2)
, EBonus number(8,2)
, DepartmentID references Department(DepartmentID) );
此表已成功
但是在尝试插入这些字段时,它会给出错误“无效数字”:
insert into WeeklySaleReport
values
( 'R1', TO_DATE ('2018/06/16','yyyy/mm/dd')
, TO_DATE ('2018/07/11','yyyy/mm/dd')
, '9020.00', '2324.21', '20.00', 'E1'
, 'Bassi', 'B1', 'Brand One', '123.00'
, 'Type1', 'T One', '500.00', '123.00'
, '555.00', 'D1' );
答案 0 :(得分:3)
您已在表格中定义EmployeeID int
,然后尝试将值'E1'
插入该列。
答案 1 :(得分:2)
我强烈建议您更多地编写插件:
insert into WeeklySaleReport (ReportID, StartDate, EndDate, SaleAmount, ComRate, ComAmount,
EmployeeID, EName, BrandID, BName, BSaleAmount,
TypeID, TName, TSaleAmount, ESaleAmount, EBonus)
values 'R1', -- ReportID
DATE '2018-06-16', -- StartDate
DATE '2018-07-11', -- EndDate
9020.00, -- SaleAmount
2324.21, -- ComRate
20.00, -- ComAmount
'E1' -- EmployeeId
---------^ ERROR
'Bassi', -- EName
'B1', -- BrandId
'Brand One', -- BName
123.00, -- BSaleAmount
'Type1', -- TypeId
'T One', -- TName
500.00, -- TSaleAmount
123.00, -- ESaleAmount
555.00, -- Bonus
'D1' -- DepartmentId
);
注意:
EmployeeId
显然是一个错误。VARCHAR2()
而不是VARCHAR()
作为字符串。DATE
关键字。它是ANSI标准,更易于阅读。我刚刚学到了一些东西。 DepartmentId
声明 在Oracle中有效,即使它没有类型。 Here是一个SQL小提琴。大多数数据库都需要表中的类型定义。但是,我仍然不知道该值是否有效,因为问题中的类型不明确。