tratamiento de errores en oracle

Download Tratamiento De Errores en Oracle

If you can't read please download the document

Upload: -l-mpra2r-

Post on 11-Jun-2015

1.107 views

Category:

Documents


3 download

DESCRIPTION

este doc escribo algunos tratamientos de errores en oracle.

TRANSCRIPT

Tratamiento De Errores Tipos de Errores: De Compilacin: Quien se encarga de informar es el copilador PL/SQL y quien se encarga de corregir es el programador. De Ejecucin: Quien se encarga de informar es el motor de ejecucin PL/SQL, donde las excepciones son generadas e interceptadas por las rutinas de tratamiento de excepciones. Excepciones Tenemos dos tipos de excepciones definidas por el usuario y predefinidas. Esquema General: EXCEPTION WHEN nombre_excepcin THEN secuencia_de_instrucciones; WHEN nombre_excepcin THEN secuencia_de_instrucciones; [ WHEN OTHERS THEN secuencia_de_instrucciones; ] END;La Sentencia Raise

La sentencia RAISE permite lanzar una excepcin en forma explcita. Es posible utilizar esta sentencia en cualquier lugar que se encuentre dentro del alcance de la excepcin. DECLARE -- Declaramos una excepcion identificada por VALOR_NEGATIVO VALOR_NEGATIVO EXCEPTION; valor NUMBER; BEGIN -- Ejecucion valor := -1; IF valor < 0 THEN RAISE VALOR_NEGATIVO; END IF; EXCEPTION -- Excepcion WHEN VALOR_NEGATIVO THEN dbms_output.put_line('El valor no puede ser negativo'); END; Excepciones Definidas por el Usuario Una excepcin definida por el usuario es definida por el programador. Ejemplo DECLARE e_MuhcosEstudiantes EXCEPTION; e_MuchosEstudiantes, es un identificador que estar visible antes o al final de ese bloque.

Excepciones Predefinida Hay diversas excepciones que corresponden con los errores de Oracle ms comunes son: Invalid_Cursor Ocurre cuando se hace referencia a un cursor que esta cerrado. No_Data_Found Ocurre cuando una sentencia SELECT no retorna ninguna fila. DECLARE TYPE t_NumberTableType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; v_NumberTable t_NumberTableType; v_TempVar NUMBER; BEGIN v_TempVar := v_NumberTable(1); END; Value_Error Ocurre cuando hay conflicto de tipos de datos. DECLARE v_TempVar VARCHAR2(3); BEGIN v_TempVar := 'ABCD'; END; Rowtype_Mismatch Ese tipo de excepcin es levantada cuando los tipos de variable de cursor PL/SQL no corresponden. DECLARE e_MuchosEstudiantes EXCEPTION; v_EstudiantesActual NUMBER(3); v_MaxEstudiantes NUMBER(3); BEGIN SELECT current_students, max_students INTO v_EstudiantesActual, v_MaxEstudiantes FROM Clases WHERE departamento = 'HIS' AND curso = 101; IF v_ActualEstudiantes > v_MaxEstudiantes THEN RAISE e_MuchosEstudiantes; END IF; END; Dup_Val_On_Index Una unica restriccion violada. BEGIN INSERT INTO students (id, first_name, last_name) VALUES (20000, 'John', 'Smith'); INSERT INTO students (id, first_name, last_name) VALUES (20000, 'Susan', 'Ryan'); END;DUP_VAL_ON_INDEX: Timeout_On_Resource Se excedi el tiempo mximo en espera por un recurso.

Not_Logged_On El programa efectu una llamada a Oracle sin estar conectado. Login_Denied El login o la contrasea utilizados para entrar en Oracle son invlidos. Too_Many_Rows Una sentencia SELECT INTO devolvi ms de un registro. Zero_Divide Se ha ejecutado una divisin donde el divisor vala cero. Storage_Error Si no se dispone de ms memoria o la memoria esta daada. Program_Error Ocurri un problema interno al ejecutar el cdigo PL/SQL. Access_Into_Null Se intent asignar un valor a los atributos de un objeto no inicializado. Collection_Is_Null Se intent asignar un valor a una tabla anidada an no inicializada. Self_Is_Null El parmetro SELF (el primero que es pasado a un mtodo MEMBER) es nulo. Others Cualquier otro tipo de error que pueda producirse. Cuando se utiliza la excepcin OTHERS, cualquier excepcin que no se haya tratado anteriormente se procesar segn la secuencia de instrucciones incluida dentro de la seccin OTHERS. OTHERS debe ser la ltima excepcin tratada dentro de la seccin dedicada al tratamiento de excepciones.