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
            );