PL/SQL proporciona un gran número de excepciones predefinidas que permiten controlar las condiciones de error más habituales.
Las excepciones predefinidas no necesitan ser declaradas. Simplemente se utilizan cuando estas son lanzadas por algún error determinado.
La siguiente es la lista de las excepciones predeterminadas por PL/SQL y una breve descripción de cuándo son accionadas:
Excepcion | Se ejecuta ... | SQLCODE |
ACCESS_INTO_NULL | El programa intentó asignar valores a los atributos de un objeto no inicializado | -6530 |
COLLECTION_IS_NULL | El programa intentó asignar valores a una tabla anidada aún no inicializada | -6531 |
CURSOR_ALREADY_OPEN | El programa intentó abrir un cursor que ya se encontraba abierto. Recuerde que un cursor de ciclo FOR automáticamente lo abre y ello no se debe especificar con la sentencia OPEN | -6511 |
DUP_VAL_ON_INDEX | El programa intentó almacenar valores duplicados en una columna que se mantiene con restricción de integridad de un índice único (unique index) | -1 |
INVALID_CURSOR | El programa intentó efectuar una operación no válida sobre un cursor | -1001 |
INVALID_NUMBER | En una sentencia SQL, la conversión de una cadena de caracteres hacia un número falla cuando esa cadena no representa un número válido | -1722 |
LOGIN_DENIED | El programa intentó conectarse a Oracle con un nombre de usuario o password inválido | -1017 |
NO_DATA_FOUND | Una sentencia SELECT INTO no devolvió valores o el programa referenció un elemento no inicializado en una tabla indexada | 100 |
NOT_LOGGED_ON | El programa efectuó una llamada a Oracle sin estar conectado | -1012 |
PROGRAM_ERROR | PL/SQL tiene un problema interno | -6501 |
ROWTYPE_MISMATCH | Los elementos de una asignación (el valor a asignar y la variable que lo contendrá) tienen tipos incompatibles. También se presenta este error cuando un parámetro pasado a un subprograma no es del tipo esperado | -6504 |
SELF_IS_NULL | El parámetro SELF (el primero que es pasado a un método MEMBER) es nulo | -30625 |
STORAGE_ERROR | La memoria se terminó o está corrupta | -6500 |
SUBSCRIPT_BEYOND_COUNT | El programa está tratando de referenciar un elemento de un arreglo indexado que se encuentra en una posición más grande que el número real de elementos de la colección | -6533 |
SUBSCRIPT_OUTSIDE_LIMIT | El programa está referenciando un elemento de un arreglo utilizando un número fuera del rango permitido (por ejemplo, el elemento “-1”) | -6532 |
SYS_INVALID_ROWID | La conversión de una cadena de caracteres hacia un tipo rowid falló porque la cadena no representa un número | -1410 |
TIMEOUT_ON_RESOURCE | Se excedió el tiempo máximo de espera por un recurso en Oracle | -51 |
TOO_MANY_ROWS | Una sentencia SELECT INTO devuelve más de una fila | -1422 |
VALUE_ERROR | Ocurrió un error aritmético, de conversión o truncamiento. Por ejemplo, sucede cuando se intenta calzar un valor muy grande dentro de una variable más pequeña | -6502 |
ZERO_DIVIDE | El programa intentó efectuar una división por cero | -1476 |
No hay comentarios:
Publicar un comentario