Domanda

hy

Tavolo:

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

Inserisci sbagliato:

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

che cosa è sbagliato?

codice di errore:

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.
È stato utile?

Soluzione

  

* Causa: I dati di ingresso da convertire utilizzando un modello formato data   era              errato. I dati di input non contiene un numero in cui un   numero era              richiesto dal modello di formato.

La stringa di data che si sta utilizzando non corrisponde a quello che Oracle sta aspettando. Il formato predefinito, IIRC, è DD-Mon-AAAA, non Mon-GG-AAAA come si sta tentando di utilizzare.

Altri suggerimenti

INSERT
INTO PLAYERS
  (
    PlayerNo,
    Name,
    date_of_birth,
    leagno
  )
  VALUES
  (
    1,
    'Philipp K',
    TO_DATE('Jan-10-1999','Mon-dd-yyyy'),
    '1'
  )

È necessario fornire data utilizzando TO_DATE con il formato giusto.

L'errore spiega:

  

"I dati di input da convertire utilizzando   un modello formato della data non era corretta.   I dati di input non conteneva un   numero dove un numero è stato richiesto dalla   il modello di formato "

Che cosa questo significa è il valore che si sta passando alla colonna date_of_birth è nel formato sbagliato. Per impostazione predefinita, Oracle si aspetta che le date siano nel formato DD-MON-YYYY. Si passa un data nel formato MON-GG-AAAA.

Ci sono due - e tre -. Modi di affrontare questo

  1. Usa un maschera di formato esplicito: to_date('Jan-10-1999', 'MON-DD-YYYY')
  2. il parametro NLS_DATE_FORMAT , a la sessione o livello di database anche. F ind di più qui e < a href = "http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_2013.htm#i2154767" rel = "nofollow"> qui .
  3. cambiare la vostra istruzione di inserimento di passare la data nel formato previsto.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top