SlideShare una empresa de Scribd logo
1 de 5
/*
Sesión10 – Manejo de Excepciones
Estudiante: José Luis Toro Alcarraz
Curso: Base de Datos Avanzado II
Correo:i201010865@cibertec.edu.pe
*/
Objetivos de la sesión.




Definir qué es un excepción en PL/SQL.
Entender los diferentes tipos de excepciones.
Conocer las estrategias para controlar adecuadamente las excepciones.

1) Definición y declaración de excepciones
2) Generación de excepciones
3) Tratamiento de excepciones
4) Propagación de excepciones
1) Definición y declaración de excepciones.
Una excepción es un error ocurrido durante la ejecución de un programa PL/SQL.
Las rutinas de tratamiento de excepciones son los métodos a través el cual el programa
reacciona a los errores de ejecución (excepciones).
Cuando un error ocurre una excepción se dispara, ya sea que esté o no controlada en el
código. Si es controlada en el código se ejecutarán las sentencias bajo la misma, sino se
detendrá la ejecución.
Cuando se produce un error, se genera una excepción. Cuando esto sucede, el control
pasa al gestor de excepciones, que es una sección independiente del programa. Esto
permite separar la gestión de errores del resto de programa, lo que hace que sea más fácil
de entender la lógica de éste, y también asegura que todos los errores serán
interceptados.
Los errores de ejecución incluyen errores SQL y errores procedimentales.
a) Errores de ejecución






Los errores de ejecución son de dos tipos :
Errores SQL: Errores generados por el motor de base de datos.
ORA-1 : unique constraint violated
Errores Procedimentales: Errores generados por la lógica del programa.
ORA-06502: PL/SQL: numeric or value error

Ejemplo:
DECLARE
v_deptno
BEGIN

dept.deptno%TYPE;

SELECT seq_dept.NEXTVAL INTO v_deptno
FROM DUAL;
-- Añade una fila a la tabla dept
INSERT INTO dept (deptno,dname,local)
VALUES (v_deptno,'SISTEMAS','LIMA');
COMMIT;
-- ZONA DE TRATAMIENTO DE EXCEPCIONES
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('ERROR EN EL SELECT .. INTO');
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('NO PUDO INSERTAR');
END;
/
b) Declaración de excepciones


Las excepciones se declaran en la sección declarativa de un bloque, se generan en la
sección ejecutable y se tratan en la sección de excepciones. Existen dos clases de
excepciones: definidas por el usuario y predefinidas.

Excepciones definidas por el usuario:




Una excepción definida por el usuario es un error cuya definición se realiza dentro del
programa. El error en cuestión no tiene que ser necesariamente un error Oracle, sino que
podría tratarse de un error relativo a los datos.
Se declaran en la sección declarativa de un bloque PL/SQL y tienen asociada el tipo
EXCEPTION.

Ejemplo:
DECLARE
v_numemp
NUMBER(2);
e_MuchosEmp EXCEPTION;
BEGIN
SELECT count(1) INTO v_numemp
FROM emp;
IF v_numemp > 10 THEN
RAISE e_MuchosEmp;
END IF;
DBMS_OUTPUT.PUT_LINE('Hay ' || v_numemp || ' empleados');
-- ZONA DE TRATAMIENTO DE EXCEPCIONES
EXCEPTION
WHEN e_MuchosEmp THEN
DBMS_OUTPUT.PUT_LINE('Muchos empleados');
END;
/
Excepciones predefinidas:


Son las que Oracle ha predefinido para manejar errores clásicos.

Ejemplo:





DUP_VAL_ON_INDEX(pk ya existe)
INVALID_CURSOR(error procesamiento de cursores)
TOO_MANY_ROWS(select into devuelve mas de una fila)
NO_DATA_FOUND(select into no devuelve data)

2) Generación de excepciones.
Una excepción es generada cuando su error asociado se produce. Las excepciones definidas
por el usuario se generan explícitamente mediante la instrucción RAISE, mientras que las
excepciones predefinidas se generan implícitamente cuando ocurre su error Oracle asociado.
Cuando se genera una excepción el control pasa inmediatamente a la sección de excepciones del
bloque PL/SQL.
Ejemplo:
DECLARE
v_numdep
NUMBER(2);
e_MuchosDeps EXCEPTION;
BEGIN
-- Añade una fila a la tabla dept
INSERT INTO dept (deptno,dname,local)
VALUES (seq_dept.NEXTVAL ,'SISTEMAS','LIMA');
-- Validamos el número de departamentos
SELECT count(1) INTO v_numdep
FROM dept;
IF v_numdep > 5 THEN
RAISE e_MuchosDeps;
END IF;
COMMIT;
-- ZONA DE TRATAMIENTO DE EXCEPCIONES
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('NO PUDO INSERTAR');
WHEN e_MuchosDeps THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('Muchos departamentos');
END;
/
3) Tratamiento de excepciones
Cuando se genera una excepción, el control pasa a la sección de excepciones del bloque. Esta
sección está compuesta por rutinas de tratamiento para las distintas excepciones. Una rutina de
tratamiento de excepciones contiene el código que se ejecutará cuando ocurra el error asociado
con la excepción y esta sea generada
Sintaxis:
EXCEPTION
WHEN nombre_excepcion THEN
secuencia_instrucciones1;
WHEN nombre_excepcion THEN
secuencia_instrucciones2;
[
WHEN OTHERS THEN
secuencia_instrucciones3; ]
END;
Cada rutina de tratamiento de excepciones está formada por la cláusula WHEN y las instrucciones
que se ejecutarán cuando la excepción sea generada. La cláusula WHEN identifica la excepción
correspondiente a cada rutina de tratamiento.
4) Propagación de excepciones.
a) Cláusula Others




WHEN OTHERS es una rutina de tratamiento de errores especial. Se ejecutará para todas
las excepciones que se generen y no sean tratadas en ninguna otra cláusula WHEN
definida en la sección de excepciones actual.
Debe ser siempre la última rutina de tratamiento del bloque, de modo que las más
específicas sean examinadas primero.

a) SQLCODE SQLERRM
Permite identificar dentro de una cláusula OTHERS el error que ocurrió durante la ejecución del
programa.



SQLCODE: Función que devuelve el código de error actual.
SQLERRM: Función que devuelve el texto del mensaje de error actual.

b) RAISE_APPLICATION_ERROR
Permite crear mensajes más descriptivos para los errores predefinidos de Oracle.
Sintaxis:
RAISE_APPLICATION_ERROR (número_error, mensaje_error,
[preservar_errores])
Problema1: Ingresar un nuevo departamento y guardar en un tabla los errores generados
DECLARE
V_NUMDEP NUMBER(2);
BEGIN
-- Añade una fila a la tabla departamento
INSERT INTO DEPT (DEPTNO,DNAME,LOCAL)
VALUES (SEQ_DEPT.NEXTVAL ,'SISTEMAS','LIMA');
COMMIT;
-- ZONA DE TRATAMIENTO DE EXCEPCIONES
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE('NO PUDO INSERTAR');
WHEN OTHERS THEN
ROLLBACK;
-- Insertamos el error en la tabla LOG_ERROR
INSERT INTO LOG_ERROR(CODERROR,DESCRIPCION,FECHA,PROGRANA,
USUARIO)
VALUES(SQLCODE,SQLERRM,SYSDATE,'AAAA',USER);
DBMS_OUTPUT.PUT_LINE('ERROR INESPERADO ' || SQLCODE || ' – ' || SQLERRM);
END;
/

Excepciones predefinidas vistas hasta ahora:
WHEN SQL%NOTFOUND THEN No se encuentra el SQL
WHEN NOT_DATA_FOUND THEN  NO hay datos
WHEN ZERO_DIVIDE THEN 
Cuando se divide entre cero
WHEN OTHERS THEN  Otros errors
WHEN DUP_VAL_ON_INDEX THEN -> Si la PK ya existe, cuando no se pudo insertar el registro
WHEN INVALID_CURSOR THEN --> Error procesamiento de cursores
WHEN TOO_MANY_ROWS THEN --> select into devuelve mas de una fila
WHEN DATA_FOUND THEN --> select into no devuelve data

Más contenido relacionado

La actualidad más candente

Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Darthuz Kilates
 
Metricas de software
Metricas de softwareMetricas de software
Metricas de softwaresophialara123
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosJosé Antonio Sandoval Acosta
 
plataformas de desarrollo
plataformas de desarrolloplataformas de desarrollo
plataformas de desarrolloosvaldo molina
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareCoesi Consultoria
 
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el SoftwareGestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el SoftwareJosé Antonio Sandoval Acosta
 
4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De SoftwareJulio Pari
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciamonty19
 
Clasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareClasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareElvisAR
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para DummiesSorey García
 
Herramientas case alto y bajo nivel
Herramientas case alto y bajo nivelHerramientas case alto y bajo nivel
Herramientas case alto y bajo nivelsistemaaabbbb
 
Plantilla plan pruebas_de_software
Plantilla plan pruebas_de_softwarePlantilla plan pruebas_de_software
Plantilla plan pruebas_de_softwarejoseluispt
 
La práctica en el Desarrollo de Software: Una visión general!
La práctica en el Desarrollo de Software: Una visión general!La práctica en el Desarrollo de Software: Una visión general!
La práctica en el Desarrollo de Software: Una visión general!Cristian Sánchez
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupXochitl Saucedo Muñoz
 

La actualidad más candente (20)

Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi
 
2 modelos de la ingenieria de software
2  modelos de la ingenieria de software2  modelos de la ingenieria de software
2 modelos de la ingenieria de software
 
Caso De Uso
Caso De UsoCaso De Uso
Caso De Uso
 
Metricas de software
Metricas de softwareMetricas de software
Metricas de software
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
 
Programacion web
Programacion webProgramacion web
Programacion web
 
plataformas de desarrollo
plataformas de desarrolloplataformas de desarrollo
plataformas de desarrollo
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del software
 
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el SoftwareGestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
 
4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software4 Clase Metodologia De Desarrolo De Software
4 Clase Metodologia De Desarrolo De Software
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Clasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de softwareClasificación de las metodologías de desarrollo de software
Clasificación de las metodologías de desarrollo de software
 
Modelado, Ingenieria de Software
Modelado, Ingenieria de SoftwareModelado, Ingenieria de Software
Modelado, Ingenieria de Software
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para Dummies
 
MetodologíAs Y Ciclos De Vida
MetodologíAs Y Ciclos De VidaMetodologíAs Y Ciclos De Vida
MetodologíAs Y Ciclos De Vida
 
Herramientas case alto y bajo nivel
Herramientas case alto y bajo nivelHerramientas case alto y bajo nivel
Herramientas case alto y bajo nivel
 
Cocomo ii
Cocomo iiCocomo ii
Cocomo ii
 
Plantilla plan pruebas_de_software
Plantilla plan pruebas_de_softwarePlantilla plan pruebas_de_software
Plantilla plan pruebas_de_software
 
La práctica en el Desarrollo de Software: Una visión general!
La práctica en el Desarrollo de Software: Una visión general!La práctica en el Desarrollo de Software: Una visión general!
La práctica en el Desarrollo de Software: Una visión general!
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rup
 

Destacado

Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)José Toro
 
Sesión14 – Archivos redologs (Oracle)
Sesión14 – Archivos redologs (Oracle)Sesión14 – Archivos redologs (Oracle)
Sesión14 – Archivos redologs (Oracle)José Toro
 
Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)José Toro
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)José Toro
 
Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)José Toro
 
Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)José Toro
 
Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)José Toro
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)José Toro
 
Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)José Toro
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)José Toro
 
Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)José Toro
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)José Toro
 
Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)José Toro
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)José Toro
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)José Toro
 
CapÍtulo 23 (Seguridad de base de datos)
CapÍtulo 23 (Seguridad de base de datos)CapÍtulo 23 (Seguridad de base de datos)
CapÍtulo 23 (Seguridad de base de datos)Liz Ocampo
 
Semana 1 t sistema de base de datos
Semana 1 t sistema de base de datosSemana 1 t sistema de base de datos
Semana 1 t sistema de base de datoserickrwk
 

Destacado (20)

Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)
 
Sesión14 – Archivos redologs (Oracle)
Sesión14 – Archivos redologs (Oracle)Sesión14 – Archivos redologs (Oracle)
Sesión14 – Archivos redologs (Oracle)
 
Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)
 
Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)
 
Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)
 
Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)
 
Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)
 
Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)
 
Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
 
CapÍtulo 23 (Seguridad de base de datos)
CapÍtulo 23 (Seguridad de base de datos)CapÍtulo 23 (Seguridad de base de datos)
CapÍtulo 23 (Seguridad de base de datos)
 
Semana 1 t sistema de base de datos
Semana 1 t sistema de base de datosSemana 1 t sistema de base de datos
Semana 1 t sistema de base de datos
 
Tema 02 - Filtros - 2012 01
Tema 02 - Filtros - 2012 01Tema 02 - Filtros - 2012 01
Tema 02 - Filtros - 2012 01
 
Tema 03 filtros 2011 02
Tema 03   filtros 2011 02Tema 03   filtros 2011 02
Tema 03 filtros 2011 02
 
Tema 05 tablas dinamicas 2011 02
Tema 05   tablas dinamicas 2011 02Tema 05   tablas dinamicas 2011 02
Tema 05 tablas dinamicas 2011 02
 

Similar a Sesion09 - Manejo de Excepciones (Oracle)

Similar a Sesion09 - Manejo de Excepciones (Oracle) (20)

Tratamiento de errores
Tratamiento de erroresTratamiento de errores
Tratamiento de errores
 
UDA-Anexo gestión de excepciones
UDA-Anexo gestión de excepcionesUDA-Anexo gestión de excepciones
UDA-Anexo gestión de excepciones
 
Tipos de excepciones
Tipos de excepcionesTipos de excepciones
Tipos de excepciones
 
[ES] Manejo de datos y excepciones
[ES] Manejo de datos y excepciones[ES] Manejo de datos y excepciones
[ES] Manejo de datos y excepciones
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursores
 
Java oo tema09_excepciones
Java oo tema09_excepcionesJava oo tema09_excepciones
Java oo tema09_excepciones
 
Programación Orientada a Objetos - Unidad 5 Excepciones
Programación Orientada a Objetos - Unidad 5 ExcepcionesProgramación Orientada a Objetos - Unidad 5 Excepciones
Programación Orientada a Objetos - Unidad 5 Excepciones
 
Java excepciones
Java excepcionesJava excepciones
Java excepciones
 
Trigger o Disparadores
Trigger o DisparadoresTrigger o Disparadores
Trigger o Disparadores
 
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONESJAVA ORIENTADO A OBJETOS - EXCEPCIONES
JAVA ORIENTADO A OBJETOS - EXCEPCIONES
 
Trigger
TriggerTrigger
Trigger
 
Java5
Java5Java5
Java5
 
Jyoc java-cap12 excepciones
Jyoc java-cap12 excepcionesJyoc java-cap12 excepciones
Jyoc java-cap12 excepciones
 
Bloques
BloquesBloques
Bloques
 
Lab excepciones
Lab excepcionesLab excepciones
Lab excepciones
 
71946780 manual-pl-sql-espanol
71946780 manual-pl-sql-espanol71946780 manual-pl-sql-espanol
71946780 manual-pl-sql-espanol
 
Statement
StatementStatement
Statement
 
Portafolio 1 sql
Portafolio 1 sqlPortafolio 1 sql
Portafolio 1 sql
 
3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string
 
3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string3...3 manejo de excepciones y la clase string
3...3 manejo de excepciones y la clase string
 

Último

MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoJosDanielEstradaHern
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 

Último (20)

MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 

Sesion09 - Manejo de Excepciones (Oracle)

  • 1. /* Sesión10 – Manejo de Excepciones Estudiante: José Luis Toro Alcarraz Curso: Base de Datos Avanzado II Correo:i201010865@cibertec.edu.pe */ Objetivos de la sesión.    Definir qué es un excepción en PL/SQL. Entender los diferentes tipos de excepciones. Conocer las estrategias para controlar adecuadamente las excepciones. 1) Definición y declaración de excepciones 2) Generación de excepciones 3) Tratamiento de excepciones 4) Propagación de excepciones 1) Definición y declaración de excepciones. Una excepción es un error ocurrido durante la ejecución de un programa PL/SQL. Las rutinas de tratamiento de excepciones son los métodos a través el cual el programa reacciona a los errores de ejecución (excepciones). Cuando un error ocurre una excepción se dispara, ya sea que esté o no controlada en el código. Si es controlada en el código se ejecutarán las sentencias bajo la misma, sino se detendrá la ejecución. Cuando se produce un error, se genera una excepción. Cuando esto sucede, el control pasa al gestor de excepciones, que es una sección independiente del programa. Esto permite separar la gestión de errores del resto de programa, lo que hace que sea más fácil de entender la lógica de éste, y también asegura que todos los errores serán interceptados. Los errores de ejecución incluyen errores SQL y errores procedimentales. a) Errores de ejecución      Los errores de ejecución son de dos tipos : Errores SQL: Errores generados por el motor de base de datos. ORA-1 : unique constraint violated Errores Procedimentales: Errores generados por la lógica del programa. ORA-06502: PL/SQL: numeric or value error Ejemplo: DECLARE v_deptno BEGIN dept.deptno%TYPE; SELECT seq_dept.NEXTVAL INTO v_deptno FROM DUAL;
  • 2. -- Añade una fila a la tabla dept INSERT INTO dept (deptno,dname,local) VALUES (v_deptno,'SISTEMAS','LIMA'); COMMIT; -- ZONA DE TRATAMIENTO DE EXCEPCIONES EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('ERROR EN EL SELECT .. INTO'); WHEN DUP_VAL_ON_INDEX THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('NO PUDO INSERTAR'); END; / b) Declaración de excepciones  Las excepciones se declaran en la sección declarativa de un bloque, se generan en la sección ejecutable y se tratan en la sección de excepciones. Existen dos clases de excepciones: definidas por el usuario y predefinidas. Excepciones definidas por el usuario:   Una excepción definida por el usuario es un error cuya definición se realiza dentro del programa. El error en cuestión no tiene que ser necesariamente un error Oracle, sino que podría tratarse de un error relativo a los datos. Se declaran en la sección declarativa de un bloque PL/SQL y tienen asociada el tipo EXCEPTION. Ejemplo: DECLARE v_numemp NUMBER(2); e_MuchosEmp EXCEPTION; BEGIN SELECT count(1) INTO v_numemp FROM emp; IF v_numemp > 10 THEN RAISE e_MuchosEmp; END IF; DBMS_OUTPUT.PUT_LINE('Hay ' || v_numemp || ' empleados'); -- ZONA DE TRATAMIENTO DE EXCEPCIONES EXCEPTION WHEN e_MuchosEmp THEN DBMS_OUTPUT.PUT_LINE('Muchos empleados'); END; /
  • 3. Excepciones predefinidas:  Son las que Oracle ha predefinido para manejar errores clásicos. Ejemplo:     DUP_VAL_ON_INDEX(pk ya existe) INVALID_CURSOR(error procesamiento de cursores) TOO_MANY_ROWS(select into devuelve mas de una fila) NO_DATA_FOUND(select into no devuelve data) 2) Generación de excepciones. Una excepción es generada cuando su error asociado se produce. Las excepciones definidas por el usuario se generan explícitamente mediante la instrucción RAISE, mientras que las excepciones predefinidas se generan implícitamente cuando ocurre su error Oracle asociado. Cuando se genera una excepción el control pasa inmediatamente a la sección de excepciones del bloque PL/SQL. Ejemplo: DECLARE v_numdep NUMBER(2); e_MuchosDeps EXCEPTION; BEGIN -- Añade una fila a la tabla dept INSERT INTO dept (deptno,dname,local) VALUES (seq_dept.NEXTVAL ,'SISTEMAS','LIMA'); -- Validamos el número de departamentos SELECT count(1) INTO v_numdep FROM dept; IF v_numdep > 5 THEN RAISE e_MuchosDeps; END IF; COMMIT; -- ZONA DE TRATAMIENTO DE EXCEPCIONES EXCEPTION WHEN DUP_VAL_ON_INDEX THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('NO PUDO INSERTAR'); WHEN e_MuchosDeps THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('Muchos departamentos'); END; /
  • 4. 3) Tratamiento de excepciones Cuando se genera una excepción, el control pasa a la sección de excepciones del bloque. Esta sección está compuesta por rutinas de tratamiento para las distintas excepciones. Una rutina de tratamiento de excepciones contiene el código que se ejecutará cuando ocurra el error asociado con la excepción y esta sea generada Sintaxis: EXCEPTION WHEN nombre_excepcion THEN secuencia_instrucciones1; WHEN nombre_excepcion THEN secuencia_instrucciones2; [ WHEN OTHERS THEN secuencia_instrucciones3; ] END; Cada rutina de tratamiento de excepciones está formada por la cláusula WHEN y las instrucciones que se ejecutarán cuando la excepción sea generada. La cláusula WHEN identifica la excepción correspondiente a cada rutina de tratamiento. 4) Propagación de excepciones. a) Cláusula Others   WHEN OTHERS es una rutina de tratamiento de errores especial. Se ejecutará para todas las excepciones que se generen y no sean tratadas en ninguna otra cláusula WHEN definida en la sección de excepciones actual. Debe ser siempre la última rutina de tratamiento del bloque, de modo que las más específicas sean examinadas primero. a) SQLCODE SQLERRM Permite identificar dentro de una cláusula OTHERS el error que ocurrió durante la ejecución del programa.   SQLCODE: Función que devuelve el código de error actual. SQLERRM: Función que devuelve el texto del mensaje de error actual. b) RAISE_APPLICATION_ERROR Permite crear mensajes más descriptivos para los errores predefinidos de Oracle. Sintaxis: RAISE_APPLICATION_ERROR (número_error, mensaje_error, [preservar_errores])
  • 5. Problema1: Ingresar un nuevo departamento y guardar en un tabla los errores generados DECLARE V_NUMDEP NUMBER(2); BEGIN -- Añade una fila a la tabla departamento INSERT INTO DEPT (DEPTNO,DNAME,LOCAL) VALUES (SEQ_DEPT.NEXTVAL ,'SISTEMAS','LIMA'); COMMIT; -- ZONA DE TRATAMIENTO DE EXCEPCIONES EXCEPTION WHEN DUP_VAL_ON_INDEX THEN DBMS_OUTPUT.PUT_LINE('NO PUDO INSERTAR'); WHEN OTHERS THEN ROLLBACK; -- Insertamos el error en la tabla LOG_ERROR INSERT INTO LOG_ERROR(CODERROR,DESCRIPCION,FECHA,PROGRANA, USUARIO) VALUES(SQLCODE,SQLERRM,SYSDATE,'AAAA',USER); DBMS_OUTPUT.PUT_LINE('ERROR INESPERADO ' || SQLCODE || ' – ' || SQLERRM); END; / Excepciones predefinidas vistas hasta ahora: WHEN SQL%NOTFOUND THEN No se encuentra el SQL WHEN NOT_DATA_FOUND THEN  NO hay datos WHEN ZERO_DIVIDE THEN  Cuando se divide entre cero WHEN OTHERS THEN  Otros errors WHEN DUP_VAL_ON_INDEX THEN -> Si la PK ya existe, cuando no se pudo insertar el registro WHEN INVALID_CURSOR THEN --> Error procesamiento de cursores WHEN TOO_MANY_ROWS THEN --> select into devuelve mas de una fila WHEN DATA_FOUND THEN --> select into no devuelve data