Ing. Ricardo Carlos Inquilla Quispe

Slides:



Advertisements
Presentaciones similares
DECLARE CURSOR cur1 IS SELECT dnombre, loc FROM DEPART; v_nombre DEPART.DNOMBRE%TYPE; v_localidad DEPART.LOC%TYPE; BEGIN OPEN cur1; LOOP FETCH cur1 INTO.
Advertisements

VISTAS (VIEWS) DEFINICIÓN Y OBJETIVO DE LAS VISTAS.
Manejo de errores y excepciones
Introducción a Transact-SQL
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información Otros objetos de Base de Datos Ing. Alfonso Vicente, PMP
Informática II Prof. Dr. Gustavo Patiño MJ
EXCEPCIÓN DE ERRORES.
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Teoría de lenguajes y compiladores
UNITA - IBARRA BLOQUES PL-SQL SUBPROGRAMAS Paulina Guevara.
Características Objeto Relacionales en Oracle
Cursores Implícitos y Explícitos
PL/SQL Francisco Moreno Universidad Nacional.
SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez DuocUC.
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
Bases de Datos Relacionales
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
Universidad del Cauca – FIET – Departamento de Sistemas
PL/SQL Francisco Moreno Universidad Nacional.
Subconsultas Avanzadas
Procedimientos Almacenados Funciones Agregadas
Conversión cadena a número
UNITA - IBARRA TRIGGERS
Lenguaje Estructurado de Consultas
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Computación II Unidad X Manejo de Excepciones. Presentación de la Unidad Objetivos: –Saber manejar situaciones inesperadas dentro de un programa –Comprender.
Bases de Datos Relacionales
PL/SQL Francisco Moreno Universidad Nacional.
CAPITULO 10 Manejando Restricciones
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Módulo 8: Manejo de Errores y Excepciones
Mayo de 2009Dos Ideas - La visión de Sistemas desde el Desarrollo Manipulación de Datos Conceptos básicos.
Triggers(Disparadores)
Excepciones Unidad 5.
Vista Externa de Una Base de Datos John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Tratamiento de excepciones
Práctica Profesional PHP.
E.U. Informática U.L.P.G.C. E.U. Informática U.L.P.G.C. Introducción a - 1 Introducción a Oracle.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
Excepciones definidas por el usuario Semana 7. Aprendizajes esperados Construye procedimientos almacenados, triggers de base de datos, cursores y funciones.
Excepciones predefinidas en PL/SQL Semana 6. Aprendizajes esperados Construye procedimientos almacenados, triggers de base de datos, cursores y funciones.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Ada 2º Parte (variables, ámbitos, subrutinas, tipos abstractos de datos y excepciones)
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
Después de completar esta lección, debe ser capaz de:  Crear registro definidos por el usuario.  Crear un registro con el atributo %ROWTYPE.  Crear.
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I PL/SQL.
Apuntes PL-SQL Triggers II. Tipos de datos compuestos Registros PL/SQL: Son similares a un tipo struct en C o a un tipo Registro en otros 3GL. Se componen.
SQL: DDL.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Copyright  Oracle Corporation, All rights reserved. 8 Manipulación de Datos.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Mtr. Adrián Monge Monge Educación 2015 Maestría, Mención en Administración de Proyectos ULACITMaestría, Mención en Administración de Proyectos 2012 Licenciatura,
Copyright  Oracle Corporation, All rights reserved. 12 Otros Objetos de la Base de Datos.
Base de Datos I – Ing. Mary Carlota Bernal J.  Cada instrucción PL/SQL tiene asociado internamente un cursor  Los cursores en PL/SQL pueden ser de dos.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Copyright  Oracle Corporation, All rights reserved. 9 Creación y gestión de tablas.
6 Copyright © 2004, Oracle. Todos los derechos reservados. Trabajar con Tipos de Dato Compuestos.
Oracle Pl/SQl Developer – Nivel 1
Transcripción de la presentación:

Ing. Ricardo Carlos Inquilla Quispe Manejo de Excepciones Ing. Ricardo Carlos Inquilla Quispe

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

Temas a tratar Definición y declaración de excepciones. Generación de excepciones. Tratamiento de excepciones

Definición y declaración de excepciones

Definición de una excepción 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).

Definición de una excepción(2) Las excepciones son manejadas en todos los lenguajes de programación de una forma distinta. 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.

Definición de una excepció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

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 2. Errores Procedimentales : Errores generados por la lógica del programa. ORA-06502: PL/SQL: numeric or value error

CREATE SEQUENCE seq_dept INCREMENT BY 1 START WITH 11 NOMAXVALUE NOCYCLE

Excepciones DECLARE v_deptno dept.deptno%TYPE; BEGIN SELECT seq_dept.NEXTVAL INTO v_deptno FROM DUAL; -- Añade una fila a la tabla dept INSERT INTO dept (deptno,dname,loc) 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;

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.

Tipos de excepciones 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.

Excepciones definidas por el usuario : Tipos de excepciones Excepciones definidas por el usuario : 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 : Tipos de excepciones Excepciones predefinidas : Son las que Oracle ha predefinido para manejar errores clásicos. Ejemplo : DUP_VAL_ON_INDEX INVALID_CURSOR TOO_MANY_ROWS NO_DATA_FOUND

Generación de excepciones

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 IF v_numdep > 5 THEN RAISE e_MuchosDeps; END IF; DECLARE v_numdep NUMBER(2); e_MuchosDeps EXCEPTION; BEGIN -- Añade una fila a la tabla dept INSERT INTO dept (deptno,dname,loc) VALUES (6,'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 DBMS_OUTPUT.PUT_LINE('Muchos departamentos'); END;

Crear un bloque plsql que inserte un registro en la tabla dep, en caso la cantidad de registros se encuentre entre 6 Y 8 deberá eliminar el último resgistro que queria insertar y mostrar un mensaje “DATOS INCORRECTOS”. DEBERÁ CREAR UN VARIABLE TIPO EXCEPTION. ADEMAS DEBERÁ MOSTRAR LA CANTIDAD DE REGISTROS INSERTADOS.

Tratamiento de excepciones

Crear un bloque que cuente la cantidad de empleados que trabajan en , en caso la cantidad sea

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.

Tratamiento de excepciones Sintaxis : EXCEPTION WHEN nombre_excepcion THEN secuencia_instrucciones1; secuencia_instrucciones2; [ WHEN OTHERS THEN secuencia_instrucciones3; ] END;

Tratamiento de excepciones 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.

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.

SQLCODE y SQLERRM--OTHER http://www.ora-code.com/code-8.html 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.

Ejemplo SQLCODE y SQLERRM DECLARE v_numdep NUMBER(2); BEGIN -- Añade una fila a la tabla dept INSERT INTO dept (deptno,dname,loc) --VALUES (seq_dept.NEXTVAL ,'SISTEMAS','LIMA'); VALUES (99,'SISTEMAS','LIMAAAAAAAAAAAA'); COMMIT; -- ZONA DE TRATAMIENTO DE EXCEPCIONES EXCEPTION WHEN DUP_VAL_ON_INDEX THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('NO PUDO INSERTAR'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(‘El Codigo de Error Inesperado ' || SQLCODE || El texto del error es ' || SQLERRM); END;

Directiva EXCEPTION_INIT Permite manipular excepciones no especificadas en el código del programa. En PL/SQL, la directiva EXCEPTION_INIT asocia un nombre de excepción con un número de error de Oracle. Sintaxis: PRAGMA EXCEPTION_INIT (nombre_excepcion, error_Oracle)

COMO PONERLE NOMBRE A LOS ERRORES DE ORACLE Las excepciones sólo pueden ser manejadas por nombre (no por código ORACLE de error). Para colocarle un nombre a un error de ORACLE, de manera que se le pueda programar un manejador, se emplea la cláusula EXCEPTION_INIT:

COMO PONERLE NOMBRE A LOS ERRORES ESTABLECIDOS POR ORACLE PRAGMA EXCEPTION_INIT(<nombre_de_error>, <código_error_ORACLE>); Ejemplo: DECLARE abrazo_mortal EXCEPTION PRAGMA EXCEPTION_INIT(abrazo_mortal,-60);

Crea una Excepción y la asigna un código de error de oracle Directiva EXCEPTION_INIT Crea una Excepción y la asigna un código de error de oracle DECLARE e_ErrorNull2009 EXCEPTION; PRAGMA EXCEPTION_INIT(e_ErrorNull2009,-1400); BEGIN -- Añade una fila a la tabla dept INSERT INTO dept (deptno,dname,loc) VALUES (NULL ,'SISTEMAS','LIMA'); -- ZONA DE TRATAMIENTO DE EXCEPCIONES EXCEPTION WHEN e_ErrorNull2009 THEN DBMS_OUTPUT.PUT_LINE('Error Null‘||SQLCODE||'– ‘||SQLERRM); END;

Ejemplo: Captura un error y lo manipula DECLARE v_numdep NUMBER(2); muchas_letras EXCEPTION; PRAGMA EXCEPTION_INIT(muchas_letras, -12899); BEGIN INSERT INTO dept (deptno,dname,loc) VALUES (seq_dept.NEXTVAL ,'SISTEMAS','LIMAAAAAAAAAaaaaaaaaaA'); COMMIT; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('NO PUDO INSERTAR'); WHEN MUCHAS_LETRAS THEN DBMS_OUTPUT.PUT_LINE('DEMASIADOAS LETRAS POR HOY'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('E- Inesperado ' || SQLCODE || 'SN' || SQLERRM); END;

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])

RAISE_APPLICATION_ERROR BEGIN -- Añade una fila a la tabla dept INSERT INTO dept (deptno,dname,loc) VALUES (30 ,'SISTEMAS','LIMA'); -- ZONA DE TRATAMIENTO DE EXCEPCIONES EXCEPTION WHEN DUP_VAL_ON_INDEX THEN RAISE_APPLICATION_ERROR(-20001,'El departamento que está intentando registrar ya existe’); END;

RESUMEN RAISE es para lanzar una excepcion y se utiliza en el bloque de ejecucion. RAISE_APPLICATION_ERROR se utiliza en el bloque de Excepciones para mostrar un mensaje personalizado.

Final Sesión Preguntas Dudas ? Muchas Gracias.

Excepciones Lista Excepciones MOSTRAR TABLA select table_name from user_tables; MOSTRAR PROCEDIMIENTOS select * from user_objectswhere object_type = ‘PROCEDURE'

http://www.techonthenet.com/oracle/errors/index.php