Вставить сбой из-за неправильного нечислового символа - PullRequest
1 голос
/ 27 ноября 2010

hy

таблица:

create table Players (PlayerNo number (4) not null, Name varchar2(15), date_of_birth date,leagno varchar(4));

неправильная вставка:

insert into PLAYERS (PlayerNo,Name,date_of_birth,leagno) VALUES (1,'Philipp K','Jan-10-1999','1')

что не так?

код ошибки:

Fehler beim Start in Zeile 1 in Befehl:
insert into PLAYERS (PlayerNo,Name,date_of_birth,leagno) VALUES (1,'Philipp K','Jan-10-1999','1')
Fehlerbericht:
SQL-Fehler: ORA-01858: Ein nicht-numerisches Zeichen wurde gefunden, während ein numerisches Zeichen erwartet wurde
01858. 00000 -  "a non-numeric character was found where a numeric was expected"
*Cause:    The input data to be converted using a date format model was
           incorrect.  The input data did not contain a number where a number was
           required by the format model.
*Action:   Fix the input data or the date format model to make sure the
           elements match in number and type.  Then retry the operation.

Ответы [ 3 ]

2 голосов
/ 27 ноября 2010
INSERT
INTO PLAYERS
  (
    PlayerNo,
    Name,
    date_of_birth,
    leagno
  )
  VALUES
  (
    1,
    'Philipp K',
    TO_DATE('Jan-10-1999','Mon-dd-yyyy'),
    '1'
  )

Вам нужно указать дату, используя TO_DATE в правильном формате.

2 голосов
/ 27 ноября 2010

* Причина: входные данные для преобразования с использованием модели формата даты были неверными.Во входных данных не было числа, для которого модель формата требовала число.

Используемая вами строка даты не соответствует ожидаемому оракулом.Формат по умолчанию, iirc, это DD-Mon-YYYY, а не Mon-DD-YYYY, как вы пытаетесь использовать.

1 голос
/ 27 ноября 2010

Ошибка объясняет:

"Входные данные для преобразования с использованием модель формата даты была неверной. Входные данные не содержали номер, где номер требовался модель формата "

Это означает, что значение, передаваемое в столбец date_of_birth, имеет неправильный формат. По умолчанию Oracle ожидает, что даты будут иметь формат DD-MON-YYYY. Вы передаете дату в формате ПН-ДД-ГГГГ.

Есть два - три способа - справиться с этим.

  1. Использовать явную маску формата: to_date('Jan-10-1999', 'MON-DD-YYYY')
  2. изменить параметр NLS_DATE_FORMAT на уровне сеанса или даже базы данных. F узнай больше здесь и здесь .
  3. измените оператор вставки, чтобы передать дату в ожидаемом формате.
...