Excepciones en Oracle / PLSQL

Excepciones en Oracle / PLSQL

Están nombrados en el paquete STANDARD en PL/SQL y no necesitan ser definidos por el programador.

La sección de EXCEPTION es la encargada de recoger todas las anomalías que se puedan producir dentro del bloque de código PL/SQL.

Este tutorial de Oracle explica cómo usar las Excepciones en Oracle / PLSQL con sintaxis y ejemplos.

Oracle tiene un conjunto estándar de excepciones ya nombrado de la siguiente manera:

Listado de excepciones.

Nombre de excepción Código de error Explicación
DUP_VAL_ON_INDEX ORA-00001 Este error se debe a que se ha intentado ejecutar un INSERT o un UPDATE que intenta crear una fila con un valor duplicado en un campo restringido pon un UNIQUE INDEX.
TIMEOUT_ON_RESOURCE ORA-00051 Ha acabado el tiempo de espera destinado a la consecución de un recurso.
TRANSACTION_BACKED_OUT ORA-00061 La parte remota de la transacción ha hecho rollback..
INVALID_CURSOR ORA-01001 Esta trantado de utilizar un CURSOR que ya no existe.
NOT_LOGGED_ON ORA-01012 Está intentando ejecutar una llamada a Oracle antes de validarse.
LOGIN_DENIED ORA-01017 Está tratando de validarse contra Oracle usando una combinación errónea de usuario/clave.
NO_DATA_FOUND ORA-01403 Está sucediendo una de las siguientes cosas:

  1. Está ejecutando una sentencia SELECT INTO y no hay filas que devolver.
  2. Está haciendo referencia a una fila de un tabla que no está inicializada.
  3. Esta intentado leer pasado el fin de fichero con el paquete UTL_FILE.
TOO_MANY_ROWS ORA-01422 Está tratando de ejecutar una consulta SELECT INTO que devuelve más de una fila.
ZERO_DIVIDE ORA-01476 Está tratando de dividir por cero.
INVALID_NUMBER ORA-01722 Está tratando de ejecutar una sentencia SQL que trata de convertir una cadena en número, pero no ha funcionado.
STORAGE_ERROR ORA-06500 Se ha producido un desbordamiento de la memoria y la memoria esta corrompida.
PROGRAM_ERROR ORA-06501 Respuesta genérica a un error interno de Oracle.
VALUE_ERROR ORA-06502 Se ha producido un error de conversión, truncamiento, o restricción (constraint) de un valor numérico o de carácter.
CURSOR_ALREADY_OPEN ORA-06511 Está intentando abrir un cursor que ya está abierto.

Sintaxis

La sintaxis de las excepciones en procedimientos y funciones.

Sintaxis de procedimientos

 La sintaxis para la excepción en un procedimiento es:

Sintaxis para funciones

La sintaxis de la excepción en una función es:

Ejemplo

A continuación, se muestra un ejemplo de un procedimiento que utiliza una excepción

En este ejemplo, estamos atrapando la Excepción llamada DUP_VAL_ON_INDEX. También estamos usando la cláusula WHEN OTHERS para atrapar a todos los errores

En conclusión

Si existe un bloque de excepcion apropiado para el tipo de excepción que esta ejecuta dicho bloque. Si no existe un bloque de control de excepciones adecuado al tipo de excepcion se ejecutará el bloque de excepcion WHEN OTHERS THEN (si existe!). WHEN OTHERS debe ser el último manejador de excepciones.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.