Lenguaje PL/SQL Excepciones Manejo de excepciones • Una excepción es un error identificado de PL/SQL que se ‘levanta’ durante la ejecución de un bloque. • Puede ocurrir de forma implícita debido a un error de Oracle, o se puede ‘levantar’ explícitamente. • Se captura con un ‘manejo’ de la excepción o si la excepción no es manejada se propaga al ambiente de ejecución. Tipos de excepciones Excepción Descripción Manejo Error predefinido de ORACLE Uno de aproximada­ mente 20 errores que ocurren frecuentemente dentro de código PL/SQL No se declara, y se permite que el servidor de ORACLE lo maneje implícitamente Error no predefinido de ORACLE Cualquier otro error estándar de ORACLE Se declara en la sección DECLARE y se permite al servidor de ORACLE manejarlo implícitamente Error definido por el usuario Una condición que el desarrollador determina que no es normal Se declara en la sección DECLARE y manejarlo explícitamente Sintaxis EXCEPTION WHEN excepcion [OR excepcion …] THEN instruccion1; instruccion2; … [WHEN excepcion … … ... ] THEN instruccion1; instruccion2; …] [WHEN OTHERS THEN instruccion1; instruccion2; …] Algunas excepciones predefinidas son: NO_DATA_FOUND, TOO_MANY_ROWS, INVALID_CURSOR, ZERO_DIVIDE. Ejemplo “Actualice el número de créditos inscritos de todos los estudiantes” DECLARE v_credins ESTUDIANTE.credins.%TYPE; CURSOR e1 IS SELECT * FROM ESTUDIANTE FOR UPDATE; BEGIN … EXCEPTION WHEN INVALID_CURSOR THEN RAISE_APPLICATION_ERROR(­20201, ‘El cursor esta mal definido’); END; El número de error es un número entre –20000 y –20999. Procedimientos El procedimiento es un bloque con nombre que acepta parámetros. CREATE OR REPLACE PROCEDURE nombre_proc([parametro IN | OUT tipo_dato [,parametro IN | OUT tipo_dato ...] ] IS [declaraciones definidas por usuario] BEGIN …. [EXCEPTION] … END; Funciones La función es un bloque con nombre que acepta parámetros y retorna un valor. CREATE OR REPLACE FUNCTION nombre_func([parametro IN | OUT tipo_dato [,parametro IN | OUT tipo_dato ...] ] RETURN tipo_datos IS [declaraciones definidas por usuario] BEGIN …. RETURN valor; [EXCEPTION] … END;