簡體   English   中英

oracle 12g無效數字錯誤

[英]oracle 12g invalid number error

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

您已經在表中定義了EmployeeID int ,然后嘗試將值'E1'插入該列。

我強烈建議您將插入內容寫成這樣:

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顯然是一個錯誤。
  • Oracle建議對字符串使用VARCHAR2()而不是VARCHAR()
  • 知道你的類型! 不要在數字常量周圍加上單引號。 這是誤導。
  • 使用DATE關鍵字。 它是ANSI標准,更易於閱讀。

我剛剛學到了一些東西。 即使DepartmentId聲明沒有類型,它在Oracle中也是有效的。 是一個SQL Fiddle。 大多數數據庫在表中都需要類型定義。 但是,我仍然不知道該值是否有效,因為問題中類型不清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM