Gestión de Excepciones en Oracle PL/SQL
Tipos de excepciones en Oracle PLSQL y su sintaxis
Oracle permite gestionar excepciones. Las excepciones suelen producirse cuando hay un error en la ejecución de un bloque PL/SQL, y como en otros lenguajes de programación es posible manipularlas, ya sea interrumpiendo la ejecución o propagando la excepción para que se trate en otra parte del código.
Sintaxis de excepción en Oracle
Un ejemplo de sintaxis podría ser este.
Vemos que podemos especificar la excepción a tratar. WHEN OTHERS sirve para tratar el resto de excepciones sin especificar su nombre.
Tipos de Excepciones PL/SQL
Predefinida por Oracle. Son las que ya vienen predefinidas por el servidor Oracle como por ejemplo.
- ACCESS_INTO_NULL. Un programa intenta asignar valores a atributos de un objeto no inicializado.
- CASE_NOT_FOUND. Ninguna de las posibilidades en una cláusula WHEN de una expressión CASE está seleccionada y no hay cláusula ELSE.
- COLLECTION_IS_NULL. Un programa intenta aplicar otros métodos diferentes de EXISTS a una tabla o array no inicializada.
- CURSOR_ALREADY_OPEN. Se intenta abrir un cursor ya abierto. Se debe cerrar siempre los cursores después de usarlos. Un bucle FOR siempre abre los cursores automáticamente.
- DUP_VAL_ON_INDEX. Duplicación de valores en una columna que contiene un índice único.
- INVALID_CURSOR. Operacion de cursor no permitida, como cerrar un cursor no abierto.
- INVALID_NUMBER. Conversion de un caracter a número fallida porque la cadena no representa un número válido.
- LOGIN_DENIED. Nombre de usuario y/o contraseñna inválida.
- NO_DATA_FOUND. Si un SELECT INTO no devuelve filas
- NOT_LOGGED_ON. Si no se está conectado a Oracle.
- PROGRAM_ERROR. Error interno de PL/SQL.
- ROWTYPE_MISTMATCH. Valores de retorno incompatibles.
- SELF_IS_NULL. Llamada al método de un objeto no inicializado.
- STORAGE_ERROR. PL/SQL se queda sin memoria, o la memoria se ha corrompido.
- SUBSCRIPT_BEYOND_COUNT. Un programa hace referencia a una tabla o array usando un índice mayour que el número de elementos que contiene.
- SUBSCRIPT_OUTSIDE_LIMIT. Un programa hace referencia a una tabla o array usando un índice fuera de rango.
- SYS_INVALID_ROWID. La conversion de cadena de texto a identificador de fila falla porque no representa un identificador de fila válido.
- TIMEOUT_ON_RESOURCE. Se supera el tiempo de espera máximo para el uso de un recurso.
- TOO_MANY_ROWS. Demasiadas filas devueltas.
- VALUE_ERROR. Error aritmético, de conversión o truncación.
- ZERO_DIVIDE. División por zero.
Ejemplo:
No predefinida por Oracle. Son las que no tienen un nombre asociado como las anteriores, pero sí un número. Por ejemplo para interrumpir en caso de una violación de integridad:
Definida por el programador. Son las que pueden definir los programadores para gestionar los errores en su código.
Esto son los tipos de excepciones que existen en PLSQL del servidor Oracle.