Manejo de Errores - PowerPoint PPT Presentation

1 / 10
About This Presentation
Title:

Manejo de Errores

Description:

Cuando surge una excepci n el proceso 'salta' al bloque manejador de las mismas ... Se puede incluso obtener el mensaje exacto de cual fue el error que sucedi ... – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 11
Provided by: ingenieri4
Category:
Tags: errores | exacto | manejo

less

Transcript and Presenter's Notes

Title: Manejo de Errores


1
PL/SQL
Tomado del curso de Francisco Moreno
2
Manejo de Errores
  • En PL/SQL, los errores son llamados excepciones
    (EXCEPTIONs)
  • Cuando surge una excepción el proceso salta al
    bloque manejador de las mismas (si lo hay, de lo
    contrario se aborta el proceso)
  • Un manejador de excepciones es una secuencia de
    instrucciones que se realizan cuando ocurre un
    error y una vez finalizada dicha secuencia, el
    bloque se da por terminado
  • Puede ser un sub-bloque

3
  • Hay 2 tipos de excepciones
  • 1. Excepciones predefinidas internas
  • - Corresponden a un grupo de errores comunes
  • en ORACLE
  • - Son disparadas automáticamente por PL/SQL
  • como respuesta a un error
  • 2. Excepciones definidas por el usuario
  • - Deben ser declaradas
  • - Deben ser disparadas explícitamente

4
Algunas de las excepciones predefinidas
  • TOO_MANY_ROWS
  • INVALID_CURSOR
  • (Ej Cerrar un cursor que ya estaba cerrado)
  • NO_DATA_FOUND
  • CURSOR_ALREADY_OPEN (Ej Abrir un cursor que ya
    estaba abierto)
  • INVALID_NUMBER
  • (Ej Fallo de conversión,
  • k3b no es un número)
  • VALUE_ERROR
  • (Ej Error de truncamiento)
  • ZERO_DIVIDE
  • DUP_VAL_ON_INDEX

5
  • Sea la tabla
  • DROP TABLE emp
  • CREATE TABLE emp(
  • cod NUMBER(8) PRIMARY KEY,
  • nom VARCHAR2(15),
  • depto NUMBER(3)
  • )
  • INSERT INTO emp VALUES(12, 'María',10)
  • INSERT INTO emp VALUES(15, 'Ana', 5)
  • INSERT INTO emp VALUES(76, 'Lisa',15)

6
  • DECLARE
  • nro_emp emp.codTYPE
  • BEGIN
  • SELECT cod INTO nro_emp
  • FROM emp
  • WHERE nom 'María'
  • DBMS_OUTPUT.PUT_LINE('El código de María es '
    nro_emp)
  • EXCEPTION
  • WHEN NO_DATA_FOUND THEN
  • DBMS_OUTPUT.PUT_LINE('María no existe')
  • WHEN TOO_MANY_ROWS THEN
  • DBMS_OUTPUT.PUT_LINE('Hay varias Marías')
  • END
  • /

7
  • Cuando las excepciones son definidas por el
    usuario, se tratan en la misma forma que las
    internas
  • Se declaran por medio del tipo de datos
  • EXCEPTION
  • nombre_excepcion EXCEPTION
  • Se deben disparar mediante la sentencia
  • RAISE nombre_excepcion

8
  • DECLARE
  • nro_emps NUMBER
  • muy_pocos EXCEPTION
  • BEGIN
  • SELECT COUNT() INTO nro_emps
  • FROM emp
  • IF nro_emps lt 4 THEN
  • RAISE muy_pocos
  • END IF
  • DBMS_OUTPUT.PUT_LINE('Hay suficientes empleados
    'nro_emps)
  • EXCEPTION
  • WHEN muy_pocos THEN

9
El manejo de OTHERS
  • Es una excepción predefinida que sirve para
    capturar una excepción que no haya sido tratada
    en el bloque de manejo de excepciones
  • Se puede incluso obtener el mensaje exacto de
    cual fue el error que sucedió mediante el uso de
    la función SQLERRM
  • Es recomendable al menos su uso en todo programa
    PL/SQL

10
  • DECLARE
  • division NUMBER(5)0
  • BEGIN
  • division TO_NUMBER('345o')
  • division division/0
  • EXCEPTION
  • WHEN ZERO_DIVIDE THEN
  • DBMS_OUTPUT.PUT_LINE('División por cero')
  • WHEN OTHERS THEN
  • DBMS_OUTPUT.PUT_LINE('Error inesperado '
    SQLERRM)
  • END
  • /
  • Se dispara primero el error de conversión
    numérica en OTHERS

Convierte una cadena a número
Es la letra o no el número Cero(0)
División por Cero
Write a Comment
User Comments (0)
About PowerShow.com