Gestión de Excepciones

Una excepción se genera cuando se produce un error en oracle. Estas excepciones se pueden gestionar.

SINTAXIS

declare
...
begin
...
EXCEPTION
  WHEN  excepcion 1 [ OR excepcion 2 ] THEN
     accion;
     accion;
  WHEN excepcion 3 [ OR excepcion 4 ] THEN
     accion;
  WHEN OTHERS THEN
     accion;
end;
/

Como ves puedes controlar todas las excepciones posibles. O bien llamandolas por su nombre o bien cuando se de alguna no prevista ( OTHERS )

Excepciones Predefinidas

  • NO_DATA_FOUND (Error Oracle : ORA-01403) La sentencia SELECT no devolvió datos
  • TOO_MANY_ROWS (Error Oracle : ORA-01422) La sentencia SELECT devolvió mas de una fila
  • INVALID_CURSOR (Error Oracle : ORA-01001) Se produjo una operación de cursor ilegal
  • ZERO_DIVIDE (Error Oracle : ORA-01476) Se intentó dividir por cero
  • DUP_VAL_ON_INDEX (Error Oracle : ORA-00001) Se intentó insertar un valor duplicado.
  • INVALID_NUMBER (Error Oracle : ORA-01722) Falla la conversión de una cadena de caracteres a número
  • LOGIN_DENIED (Error Oracle : ORA-01017) Conexión a Oracle con usuario y/o contraseña no válidos.
  • OTHERS Cualquier otra excepción que se produzca Y NO SE HAYA TRATADO ANTES.

Definición de Excepciones

Claro está que podemos definir nuestras própias excepciones. Para hacer que el programa pare cuando nosotros se lo indiquemos. Esto se hace definiendo una excepción y asociandola. Para posteriormente poder utilizarla.

Para interrumpir un error no predefinido hay que declararlo primero. o utilizar el manejador OTHERS. Para las excepciones declaradas se usa la directiva PRAGMA_EXCEPTION_INIT para indicar al compilador que asocie un nombre de excepción con un número de error Oracle. Visita la documentación de Oracle para saber mas sobre este tema.

Se puede provocar una excepción mediante la palabra clave RAISE_APPLICATION_ERROR que las invoca.

EJEMPLO

...
IF SQL%NOTFOUND THEN 
   RAISE_APPLICATION_ERROR(-20202, 'excepcion invocada por el usuario');
END IF
...
 
plsql/4.txt · Última modificación: 2008/05/13 10:00 (editor externo)
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki