You are on page 1of 7

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA

FACULTAD DE ING. MINAS, GELOGIA Y CIVIL


ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

MANEJO DE EXCEPCIONES EN PL/SQL

I. OBJETIVOS
Controlar adecuadamente, la ocurrencia de errores en la
ejecucin de programas PL/SQL a travs del uso de excepciones.
Identificar los diferentes tipos de excepciones.
Definir excepciones para anticiparse a los errores que puedan
surgir durante la ejecucin de un programa PL/SQL.

II. MARCO TERICO

QUE ES UNA EXCEPCION


Los errores en la ejecucin de cdigo PL/SQL, provenientes de fallos en
el diseo, errores de codificacin, fallos de hardware y otros, no son
totalmente identificables, de ah que sea necesario anticipar todos los
posibles errores que se puedan presentar.

Como muchos otros lenguajes de programacin, PL/SQL tiene su propio


mtodo de manipulacin de errores a travs de una caracterstica
llamada EXCEPCION.

Las excepciones pueden ser definidas internamente o definidas por el


usuario. Cuando un error ocurre, una excepcin se dispara, ya sea que
est o no controlada en el cdigo. Si es controlada en el cdigo, se
ejecutarn las sentencias bajo el mismo control, sino se detendr la
ejecucin.

DECLARACIN DE EXCEPCIONES
Las excepciones se declaran en la seccin declarativa de un bloque, se
generan en la seccin ejecutable y se tratan en la seccin de
excepciones. Existen dos clases de excepciones: definidas por el
usuario y predefinidas.

EXCEPCIONES PREDEFINIDAS

Lab. Administracin de Base de Datos 1 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

DUP_VAL_ON_INDEX Su programa trata de almacenar valores duplicados en una


columna de base de datos que debe ser nica.
LOGIN_DENIED El programa intent conectarse a Oracle con un nombre de
usuario o password invlido
Invalid_Number: se produce cuando se intenta convertir una cadena a un valor
numrico.
OTHERS Se utiliza para controlar excepciones no establecidas.

EXCEPCIONES DEFINIDAS POR EL USUARIO

PL/SQL permite al usuario declarar sus propias excepciones con el fin


de dar un mejor manejo a la ejecucin de un bloque.

Es un error cuya definicin se realiza en el programa. El error puede ser


un error Oracle o, un error relativo a los datos.

Las excepciones definidas por el usuario se declaran en la seccin


declarativa de un bloque PL/SQL. Al igual que las variables, las
excepciones tienen un tipo asociado (EXCEPTION) y un mbito.

La sintaxis es:
Nombre_excepcion EXCEPTION

TRATAMIENTO DE ERRORES

Cuando se genera una excepcion, el control pasa a la seccin de


excepciones del bloque. Esta seccin est compuesta por gestores para
las diferentes excepciones. Un gestor de excepciones contiene el cdigo
que se ejecutar cuando ocurra el error asociado con la excepcin y sta
sea generada.

DECLARE
A EXCEPCION; -- Declaracin de la excepcin A

BEGIN
.
RAISE A; -- Generacin de la excepcin A (nombre de la excepcion)
--------Cualquier cdigo aqu no se ejecuta

EXCEPTION
WHEN A THEN el control pasa al gestor de excepciones
---------secuencia de instrucciones
----------Este cdigo ser ejecutado.
[WHEN OTHERS THEN
--------- secuencia de instrucciones
--------Este cdigo ser ejecutado]
END;

Lab. Administracin de Base de Datos 2 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Cada gestor de excepciones est formado por la clausula WHEN y las


rdenes que se ejecutarn cuando la excepcion sea generada. La
clusula WHEN identifica la excepcin correspondiente a cada gestor.

En la parte WHEN OTHERS THEN contiene las sentencias que se


ejecutarn al ocurrir un error que no tiene excepcin declarada.

Debe ser siempre el ltimo gestor de un bloque.

Para saber el error que provoc la excepcin dentro del gestor de


excepciones OTHERS podemos usar las funciones SQLCODE y SQLERRM

para obtener el cdigo del error y el mensaje asociado.

SQLcode devuelve el nmero del error de Oracle y un 0 (cero) en


caso de xito al ejecutarse una sentencia SQL.
SQLERRM devuelve el correspondiente mensaje de error.

Estas funciones no pueden ser utilizadas directamente en una


sentencia SQL, pero s se puede asignar su valor a alguna variable de
programa y luego usar esta ltima en alguna sentencia.

DECLARE
err_num NUMBER;
err_msg VARCHAR2(255);
result NUMBER;
BEGIN
SELECT 1/0 INTO result
FROM DUAL;

EXCEPTION
WHEN OTHERS THEN

err_num := SQLCODE;
err_msg := SQLERRM;
DBMS_OUTPUT.put_line('Error:'||TO_CHAR(err_num));
DBMS_OUTPUT.put_line(err_msg);
END;

III. DESARROLLO

Ejemplo01:

DESARROLLAR UN PROCEDIMIENTO ALMACENADO, PARA


MOSTRAR LA CANTIDAD DE EMPLEADOS POR COD_OCUPACION,
MANEJE LAS EXCEPCIONES NECESARIAS.
Lab. Administracin de Base de Datos 3 Prof. Elvira Fernndez
(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

EJECUTANDO EL PROCEDIMIENTO
1)
begin
CANT_EMPLExCOD_OCUPACION('SA_MAN');
end;

salida:

2)
begin
CANT_EMPLExCOD_OCUPACION('SAA_MAN');
end;

AL EJECUTAR EL 2DO PROCEDIMIENTO OBSERVAMOS EL


SIGUIENTE MENSAJE DE ERROR

Lab. Administracin de Base de Datos 4 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

MANEJANDO EXCEPCIONES PREDEFINIDAS

Resultado:

EJEMPLO 02.

ACTUALICE EL SUELDO EN X VALOR A LOS EMPLEADOS QUE


GANAN MS DE Y VALOR, GENERAR UNA EXCEPCION DE
USUARIO.

Lab. Administracin de Base de Datos 5 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

Ejecutando procedimiento
BEGIN
AUMENTO_SUELDO(100,16000);
END;

EJEMPLO 03. Desarrolle un procediemrinto almacenado, que permita mostrar el


nombre del empleado y el ao de ingreso, segn el ao que empez a laborar.
Utilice la excepcion OTHER y maneje las funciones SQLCODE y SQLERRM.

EJERCICIOS PROPUESTOS

1) CREAR UN PROCEDIMIENTO ALMACENADO PARA


INGRESAR EL NOMBRE DEL DEPARTAMENTO Y NOS
MUESTRE LA CANTIDAD DE EMPLEADOS POR
DEPARTAMENTO. MANEJE LAS EXCEPCIONES NECESARIAS.

Lab. Administracin de Base de Datos 6 Prof. Elvira Fernndez


(IS-443)
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
FACULTAD DE ING. MINAS, GELOGIA Y CIVIL
ESCUELA DE FORMACIN PROFESIONAL DE INGENIERIA DE SISTEMAS

2) DESARROLLE UN PROCEDIMIENTO ALMACENADO, PARA


MOSTRAR EL HISTORIAL DE OCUPACIONES DE LOS
EMPLEADOS. MOSTRAR TODOS LOS EMPLEADOS QUE
LABORARON HASTA LA FECHA INDICADA. SE DESEA
MOSTRAR DEL EMPLEADOS(NOMBRE Y APELLIDO), NOMBRE
DE LA OCUPACION, NOMBRE DEL DEPARTAMENTO, Y LA
FECHA DE SALIDA. MANEJE LAS EXCEPCIONES
NECESARIAS.

3) DESARROLLAR UN PROCEDIMIENTO ALMACENADO, QUE


OTORGUE UN AUMENTO DEL 20% AL SUELDO DE TODOS
LOS EMPLEADOS QUE TENGAN MAS DE 6 AOS
LABORANDO EN LA EMPRESA .

4) CREE UN PROCEDIMIENTO ALMACENADO QUE PERMITA


INGRESAR UN EMPLEADO. MANEJAR EL ERROR SI YA
EXISTE EL EMPLEADO EN LA TABLA MOSTRAR RESULTADO
DEL ERROR GENERADO.

Lab. Administracin de Base de Datos 7 Prof. Elvira Fernndez


(IS-443)

You might also like