Sql oracle 12g无效数字错误
此表制作成功 但是,当尝试插入这些字段时,会出现错误“无效数字”:Sql oracle 12g无效数字错误,sql,oracle,Sql,Oracle,此表制作成功 但是,当尝试插入这些字段时,会出现错误“无效数字”: 您在表中定义了EmployeeID int,然后尝试将值'E1'插入该列。您在表中定义了EmployeeID int,然后尝试将值'E1'插入该列。我强烈建议您更像这样编写插入: insert into WeeklySaleReport values ( 'R1', TO_DATE ('2018/06/16','yyyy/mm/dd') , TO_DATE ('2018/07/11','yyyy/mm/dd') ,
您在表中定义了
EmployeeID int
,然后尝试将值'E1'
插入该列。您在表中定义了EmployeeID int
,然后尝试将值'E1'
插入该列。我强烈建议您更像这样编写插入:
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' );
注:
- 列出更新中的列。在这里,我还将它们添加为注释,这样您和其他人就可以了解正在发生的事情
显然是一个错误EmployeeId
- Oracle建议对字符串使用
而不是VARCHAR2()
VARCHAR()
- 了解你的类型!不要在数值常量周围加单引号。这是误导
- 使用
关键字。它是ANSI标准,易于阅读日期
我刚刚学到了一些东西。
DepartmentId
声明在Oracle中有效,即使它没有类型。这是一个SQL小提琴。大多数数据库都需要表中的类型定义。但是,我仍然不知道该值是否有效,因为问题中的类型不清楚。我强烈建议您更像这样编写插入:
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' );
注:
- 列出更新中的列。在这里,我还将它们添加为注释,这样您和其他人就可以了解正在发生的事情
显然是一个错误EmployeeId
- Oracle建议对字符串使用
而不是VARCHAR2()
VARCHAR()
- 了解你的类型!不要在数值常量周围加单引号。这是误导
- 使用
关键字。它是ANSI标准,易于阅读日期
我刚刚学到了一些东西。
DepartmentId
声明在Oracle中有效,即使它没有类型。这是一个SQL小提琴。大多数数据库都需要表中的类型定义。但是,我仍然不知道该值是否有效,因为问题中的类型不清楚。盲插入是巨大的反模式。您应该始终定义列列表<代码>员工ID int->'E1'
。找到有问题的列,然后修改您的问题以仅显示有问题的列和有问题的插入值。另外,您应该避免在Oracle中使用VARCHAR
——而是使用VARCHAR2
。Oracle可能会在将来更改VARCHAR
的行为以满足ANSI标准,而您不希望在这种情况下被抓住。另外,我建议使用NUMBER
而不是INT
。盲插入是一个巨大的反模式。您应该始终定义列列表<代码>员工ID int->'E1'
。找到有问题的列,然后修改您的问题以仅显示有问题的列和有问题的插入值。另外,您应该避免在Oracle中使用VARCHAR
——而是使用VARCHAR2
。Oracle可能会在将来更改VARCHAR
的行为以满足ANSI标准,而您不希望在这种情况下被抓住。另外,我建议使用NUMBER
而不是INT
。
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
);