en
PL/SQL oracle9iOracle11g oracle10gOracle
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.
1
2
3
4
5
6
|
WHEN excepcion1 OR excepcion2 THEN
expression;
WHEN excepcion3 THEN
expression;
WHEN OTHERS THEN
expression; |
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:
1
2
3
4
5
6
7
|
BEGIN
SELECT ...;
EXCEPTION
WHEN ZERO_DIVIDE THEN
expression;
DBMS_OUTPUT.PUT_LINE('La operación de ' || TO_CHAR(variable) || ' es inválida');
END |
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:
1
2
3
4
5
6
7
8
9
10
11
|
DECLARE
nombreExcepcion EXCEPTION;
PRAGMA EXCEPTION_INIT(nombreExcepcion, -2292);
...
BEGIN
...
EXCEPTION
WHEN nombreExcepcion THEN
DBMS_OUTPUT.PUT_LINE ('Excepción de integridad producida');
...
END; |
Definida por el programador. Son las que pueden definir los programadores para gestionar los errores en su código.
1
2
3
4
5
6
7
8
9
10
|
DECLARE
nombreExcepcion EXCEPTION;
...
BEGIN
...
RAISE nombreExcepcion;
...
EXCEPTION
WHEN nombreExcepcion THEN
DBMS_OUTPUT.PUT_LINE('Se ha producido una excepción'); |
Esto son los tipos de excepciones que existen en PLSQL del servidor Oracle.
Prohibida la reproducción total o parcial de este artículo sin el previo consentimiento de Webtutoriales.com
Comentarios