Insertar fallar debido a carácter no numérico equivocado
Pregunta
hy
tabla:
create table Players (PlayerNo number (4) not null, Name varchar2(15), date_of_birth date,leagno varchar(4));
inserción equivocada:
insert into PLAYERS (PlayerNo,Name,date_of_birth,leagno) VALUES (1,'Philipp K','Jan-10-1999','1')
¿equivocado?
código de error:
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.
Solución
* Causa: Los datos de entrada para ser convertidos mediante un modelo de formato de fecha fue incorrecto. Los datos de entrada no contiene un número donde una número fue requerido por el modelo de formato.
La cadena periodo que se está utilizando no coincide con lo que está a la espera de Oracle. El formato por defecto, IIRC, es DD-MES-AAAA, no Mon-DD-AAAA mientras está tratando de usar.
Otros consejos
INSERT
INTO PLAYERS
(
PlayerNo,
Name,
date_of_birth,
leagno
)
VALUES
(
1,
'Philipp K',
TO_DATE('Jan-10-1999','Mon-dd-yyyy'),
'1'
)
Debe suministrar fecha utilizando TO_DATE con el formato correcto.
explica el error:
"Los datos de entrada que se convierte usando un modelo de formato de fecha es incorrecta. Los datos de entrada no contenía una número en el que se requiere un número de el modelo de formato "
Lo que esto significa es el valor que está de paso a la columna fecha_de_nacimiento está en un formato incorrecto. Por defecto Oracle espera fechas para estar en el formato DD-MON-YYYY. Está pasando una fecha en el formato MON-DD-AAAA.
Hay dos - tres - así. Maneras de tratar con este
- Usar una máscara de formato explícito:
to_date('Jan-10-1999', 'MON-DD-YYYY')
- cambio el parámetro NLS_DATE_FORMAT , en la sesión o el nivel de base de datos, incluso. F ind más información aquí y < a href = "http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_2013.htm#i2154767" rel = "nofollow"> aquí .
- cambiar la instrucción de inserción de pasar la fecha en el formato esperado.