Si aprendes a usar eficientemente la cláusula EXCEPTION podrás manejar todas las excepciones que ocurran dentro de los PL-SQL Procedures en Oracle que construyas en la Base de Datos Oracle.
Una excepción en tus PL-SQL Procedures en Oracle
ocurre cuando el resultado de una acción no es esperada por el proceso y no
puede ser manejada por este, generando de inmediato un error en tiempo de
ejecución terminando abruptamente el proceso, es decir, una excepción es algo
inesperado que se traduce como un error que en la ejecución normal del PL-SQL
Procedures en Oracle nunca ocurre.
Afortunadamente Oracle cuenta con herramientas que
permiten manejar las excepciones o errores en tiempo de ejecución y permitir
que un proceso pueda continuar ejecutándose, me refiero al bloque BEGIN – END
que usa la cláusula EXCEPTION en tus PL-SQL Procedures en Oracle.
Revisemos un ejemplo práctico para entender mejor
el uso de la cláusula EXCEPTION en los PL-SQL Procedures en Oracle:
Ejemplo #1: Supone que tienes un procedimiento que
consulta un registro a una tabla pero se produce una excepción cuando no se
encuentra el registro que se está buscando:
/* PL-SQL Procedures en Oracle */
Procedure Prc_Buscar_Nombre(pin_rut in
t_empleado.rut%type, pst_nombre
out t_empleado.nombre%type ) is
Begin
Select emp.nombre into pst_nombre from t_empleado
emp where emp.rut=pin_rut;
End Prc_Buscar_Nombre;
En este ejemplo ocurre una excepción o un error en
tiempo de ejecución cuando el parámetro pin_rut llega con un valor que no
existe en la tabla t_empleado, esta excepción termina el proceso de inmediato
en tus PL-SQL Procedures en Oracle.
Ejemplo #2: Para solucionar el problema que ocurre
en el ejemplo anterior debes agregar la cláusula EXCEPTION para controlar el
error, veamos cómo se hace:
/* PL-SQL Procedures en Oracle */
Procedure Prc_Buscar_Nombre(pin_rut in
t_empleado.rut%type, pst_nombre
out t_empleado.nombre%type) is
Begin
Begin
Select emp.nombre into pst_nombre from t_empleado
emp where emp.rut=pin_rut;
Exception
When No_Data_Found Then
pst_nombre:= ‘Empleado no existe’;
End;
Exception
When Others Then
pst_nombre:= ‘Error: ’||To_Char(Sqlcode)||’ –
‘||Sqlerrm;
End Prc_Buscar_Nombre;
En este ejemplo de PL-SQL Procedures en Oracle se
agregó el control de excepciones en la consulta a la tabla t_empleado usando la
variable reservada de Oracle No_Data_Found que devuelve verdadero si la
consulta Select no pudo encontrar el registro, retornando en la misma variable
pst_nombre la descripción del error. Además se incluyo otra excepción al final
del proceso para controlar cualquier otro error que pueda ocurrir en tiempo de
ejecución usando la variable reservada Others que devuelve un verdadero cuando
ocurre cualquier error que no ha sido controlado por ninguna otra excepción
anterior dentro del PL-SQL Procedures en Oracle, el error se obtiene de las
variables reservadas Sqlcode que devuelve el código del error y Sqlerrm que
devuelve la descripción del error y todo se retorna en la variable pst_nombre.
Te propongo que pruebes de inmediato este ejemplo
en tu Base de Datos con tus propias tablas, PL-SQL Procedures en Oracle y
PL-SQL Function en Oracle, para que comiences a ejercitar la mano y aprendas a
dominar esta nueva técnica en tus PL-SQL Packages en Oracle.
Estoy muy interesado en conocer tu opinión y/o
comentario sobre este artículo, también cuéntame sobre qué es lo que quieres
saber de PL-SQL Procedures en Oracle y/o dime cuál es tu principal frustración
a la hora de trabajar con PL-SQL Procedures en Oracle. Estaré muy atento
respondiendo tus preguntas y/o comentarios, gracias.
Saludos
Roberto Vicencio - Escritor del Reporte
Si desea saber más puede continuar aquí