Mensajes de error para la base de datos Oracle

En este artículo vamos a ver algunos errores típicos que se producen en la base de datos Oracle.

Existen muchos tipos de errores y excepciones en Oracle por lo tanto esta entrada se irá ampliando con el tiempo para capturar los máximos errores posibles.

ORA-00904

«nombre_identificador»: identificador no válido
00904. 00000 – «%s: invalid identifier»

En Oracle no funciona los ALIAS en el group by.

Puede ser que es nuestra SELECT tengamos definido un nombre con la sentencia «as», pero más abajo cuando ejecutemos un GROUP BY no nos detecte nuestro nombre «miTabla», para que funcione se tendrá que poner tabla.columna.

SELECT tabla.columna as miTabla FROM tabla
……
GROUP BY tabla.columna (BIEN)
GROUP BY miTabla (MAL)

 

ORA-00933

comando SQL no terminado correctamente
00933. 00000 – «SQL command not properly ended»

El problema se produce porque se quiere calcular una nueva tabla e incluirla en el campo FROM, cuando se quiere incluir un as (alias) al FROM generado da error, por lo tanto cuidado con los «as» en Oracle que no estén en las SELECT.

SELECT ‘campo_prueba’ as «campo»,
from_calculado.campo_nombre
FROM
(select campo_nombre, campo_apellidos, campo_edad, from tabla_datos where campo_edad>18 group by
campo_edad) from_calculado

/* CUIDADO, NO PONER «as from_calculado», se tiene que poner sin el as*/
WHERE
(…)

 

ORA-00947

ORA-00947: no hay suficientes valores

Este error se produce frecuentemente al realizar un INSERT y es debido a que no se corresponde el número de campos a insertar con sus respectivos valores.

Por ejemplo:

El error se produciría al realizar este INSERT ya que no insertamos el valor DNI.
INSERT INTO (nombre, apellidos, dni) VALUES (Iván, Martínez)

La forma correcta sería:
INSERT INTO (nombre, apellidos, dni) VALUES (Iván, Martínez, 88888888)

ORA-01830

La máscara de formato de fecha termina antes de convertir toda la cadena de entrada.

Por ejemplo la fecha aparece en el siguiente formato :

‘5/11/2015 00:00:00’, y se solucionaría modificando su formato a ‘5/11/2015’, para modificar el formato en SQL se deberá utilizar la sentencia to_date.

to_date(‘5/11/2015 00:00:00’, ‘DD/MM/YYYY’)

 

ORA-01847

El día del mes debe estar entre 1 y el último día del mes.

El error se produce porque los parámetros de la función to_date deben estar encapsulados entre comillas simples.

Mal:

$f_ini = «to_date($fecha_inicio ,’DD/MM/YYYY’)»;

Bien:

$f_ini = «to_date(‘$fecha_inicio’ ,’DD/MM/YYYY’)»;

ORA-12899

El valor es demasiado grande para la columna.

El error se produce porque se está intentando insertar un valor con más tamaño que el permitido en la base de datos.

Por ejemplo si el campo edad se tiene definido en la base de datos con un tamaño de dos números «integer(2)», si alguien quiere ingresar un número de tres dígitos como 100 dará fallo porque el máximo son dos cifras.

La solución sería cambiar el tamaño del campo a un «integer(3)»

ORA-02291

Restricción de integridad.

(OWPRUEBA.CLAVE_AJENA_FK) violada – clave principal no encontrada.

Se produce porque no ha encontrado en la tabla ajena el identificador correcto que se relaciona con la tabla original, para corregir el error se debe de insertar un valor que exista en la tabla ajena.

Iván Martínez

Ingeniero Informático apasionado por el mundo del desarrollo WEB. Me gusta caminar por este mundo lleno de tecnologías y día a día aprender cosas nuevas como el doctor Frankenstein ¡dadme cosas para experimentar!

Deja un comentario

Tu dirección de correo electrónico no será publicada.