оракул 12g ошибка неверного номера - PullRequest
0 голосов
/ 29 апреля 2018
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' );

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Я бы настоятельно советовал вам писать ваши вставки так:

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-скрипка. Большинство баз данных требуют определения типа в таблице. Однако я до сих пор не знаю, является ли значение допустимым, потому что тип неясен в вопросе.

0 голосов
/ 29 апреля 2018

Вы определили EmployeeID int в своей таблице, затем вы пытаетесь вставить значение 'E1' в этот столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...