Yo trabajo con PL/SQL, el lenguaje de programación de Oracle. He pensado poner tips sobre el porqué se dan algunos de los errores comunes y cómo evitarlos/solucionarlos. En principio está pensado como algo sencillo, para ayudar a aquellos que se inician en este lenguaje.
El primer error sobre el que escribiré es el ORA-01403 No data found. Es bastante común y su motivo es bastante sencillo: cuando un SELECT INTO no devuelve ningún resultado. Por ejemplo:
Como el query anterior no devuelve ningún resultado, Oracle arroja el error ORA-01403.
Cómo manejarlo
Se puede manejar este error encerrando el query dentro de un bloque BEGIN END y controlando la excepción. Por ejemplo
-
BEGIN /*Inicio del script o del procedimiento*/
-
--Líneas de Código
-
(...)
-
BEGIN /*Inicio del bloque donde está el query que puede no devolver ninguna fila*/
-
SELECT nombre
-
INTO variable
-
FROM tabla_empleados a
-
WHERE a.idEmpleado = valor_que_no_existe;
-
variable := NULL;
-
END; /*Fin del bloque donde está el query que puede no devolver ninguna fila*/
-
(...)
-
--Continuación del script
-
--Código para manejar otras excepciones
-
END; /*Fin del script o del procedimiento*/
Al controlar la excepción dentro de un bloque BEGIN END el programa continuará hasta el final sin mostrar un mensaje de error. También es posible controlar la excepción en el bloque BEGIN END principal si lo que se desea es que el script o procedimiento termine
Enviar a Linuxfera Entradas Relacionadas:
Posts RSS
Vía Email













También se puede usar un cursor, así en el caso de que no devolviera nada no daría el error.
DECLARE /*Inicio del script o del procedimiento*/
CURSOR c_cursor is
SELECT nombre
FROM tabla_empleados a
WHERE a.idEmpleado = valor_que_no_existe;
BEGIN
–Líneas de Código
(…)
OPEN c_cursor;
FETCH c_cursor INTO variable;
IF c_cursor%NOTFOUND THEN
variable := NULL;
END IF;
CLOSE c_cursor;
(…)
–Continuación del script
EXCEPTION
WHEN OTHERS THEN
–Código para manejar otras excepciones
END; /*Fin del script o del procedimiento*/
Doy clases en la universidad (en las Islas Baleares de España) y la verdad es que el error “ORA-01403 No data found” es el típico que me cometen en las prácticas todos los años. Gracias por publicar un ejemplo de cómo solucionarlo fácilmente. Miraré de comentar el artículo como referencia entre los alumnos.