Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Excepciones
Acciones
Concepto de excepcin
Identificador de PL/SQL que surge durante la ejecucin
Causas
Error Oracle Provocado explcitamente
Acciones
Interrumpirlo con un manejador Propagarlo al entorno de llamadas
Gestin d G ti de excepciones i
Interrumpir la Excepcin
DECLARE BEGIN
Surge la excepcin
Propagar la Excepcin
DECLARE BEGIN
Surge l excepcin S la i
EXCEPTION
Se interrumpe la excepcin i
EXCEPTION END;
No se interrumpe la excepcin
END;
Tipos d excepciones Ti de i
Predefinidas por el Servidor Oracle No predefinida por el Servidor Provocada implcitamente
Provocada explcitamente
Interrupcin de excepciones I t i d i
EXCEPTION WHEN excepcin1 [OR excepcin2 . . .] THEN sentencia1; sentencia2; . . . [WHEN excepcin3 [OR excepcin4 . . .] THEN sentencia1; sentencia2; . . .] [WHEN OTHERS THEN sentencia1; sentencia2; . . .]
Ejercicio Ej i i
Del nombre de un empleado introducido durante ACCEPT crea un bloque PL/SQL que devuelva su nmero y su salario. Trata los siguientes casos mostrando el mensaje correspondiente:
No existe ningn empleado con ese nombre Existen varios empleados con ese nombre Se produce otro error distinto
Seccin declarativa
Nombrar la excepcin
Ejercicio Ej i i
Intente borrar todos los registros de la tabla departamento Mire el nmero de excepcin que aparece Cree un bloque PL/SQL que interrumpa una violacin de dicha excepcin (la excepcin debe surgir del intento de borrar los registros de la tabla departamento dentro de l parte t bl d t t d t d la t ejecutable) y muestre un mensaje indicando que no se pueden borrar departamentos con empleados.
Raise
Seccin S i Ejecutable Provoque explcitamente la excepcin utilizando la sentencia RAISE
Reference
Seccin d gestin S i de ti De excepciones Gestione la excepcin
Ejercicio Ej i i
Cree un bloque PL/SQL que dado el nombre de un empleado nos devuelva su salario. Compruebe el caso de que gane menos de 1000 dlares. Si esto ocurre provoque una excepcin y gestinela mostrando el mensaje El empleado XXXX est siendo explotado. l d t i d l t d Cambie XXXX por el nombre del empleado.
SQLERRM
Devuelve el mensaje asociado con el nmero de error
Entornos de llamada
ENTORNO SQL*PLUS Procedure Builder Developer / Forms Aplicacin del precompilador Bloque PL/SQL continente TRATAMIENTO DE EXCEPCIONES Muestra en la pantalla el mensaje y el nmero de error Muestra en la pantalla el mensaje y el nmero de error Accede al mensaje y nmero de error en un disparador por medio de funciones empaquetadas ERROR_CODE y ERROR_TEXT Accede al nmero de excepcin con la estructura de datos SQLCA Interrumpe la excepcin en la rutina de gestin de excepciones del bloque en el que se encuentra
Propagacin d excepciones P i de i
Los subbloques pueden gestionar una excepcin o transferirla al bloque que lo contiene
DECLARE ... e_no_rows exception; e_integrity exception; PRAGMA EXCEPTION_INIT (e_integrity, -2292); BEGIN FOR c_record IN emp_cursor LOOP BEGIN SELECT ... UPDATE ... IF SQL%NOTFOUND THEN RAISE e_no_rows; END IF; EXCEPTION WHEN e_integrity THEN ... WHEN e no rows THEN ... END; END LOOP; EXCEPTION WHEN NO DATA FOUND THEN . . . NO_DATA_FOUND WHEN TOO_MANY_ROWS THEN . . . END;
RAISE_APPLICATION_ERROR
raise_application_error (error_number, message[, {TRUE | FALSE}]);
Un procedimiento que le permite emitir mensajes de error definidos por el usuario desde subprogramas almacenados Slo se le puede llamar desde un subprograma almacenado Se utiliza en la seccin ejecutable y en la seccin de excepciones Devuelve condiciones de error al usuario con otros errores del servidor de forma consistente.
Ejercicios Ej i i
Prcticas Tema 9 Curso Oracle