Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/12/2011, 01:15
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Excepciones en Oracle

La gestión de excepciones es simple, cuando hay un error en el código, el parser se mueve hacia el bloque EXCEPTION más próximo. En tu caso, aún cuando dividir por cero tenga como resultado la tendencia a infinito, tienes el error en SELECT 1/0 INTO.. (las bases de datos son de matemática simple), esto produce el salto hacia el código exception, y en consecuencia, la sentencia SELECT 3/1 INTO RESULT_3 no se ejecuta dejando la variable result_3 sin valor.

Código:
DECLARE 
err_num NUMBER; 
err_msg VARCHAR2(255); 
result NUMBER;
RESULT_2 NUMBER;
RESULT_3 NUMBER;
BEGIN 
SELECT 2/1 INTO RESULT_2
FROM DUAL;
DBMS_OUTPUT.PUT_LINE ('VALOR :'||RESULT_2);
SELECT 1/0 INTO 
result 
FROM DUAL; 
SELECT 3/1 INTO RESULT_3
FROM DUAL;
EXCEPTION 
WHEN OTHERS THEN 
err_num := SUBSTR (SQLCODE,2,5); 
err_msg := SQLERRM; 
DBMS_OUTPUT.put_line('Error:'||err_num); 
DBMS_OUTPUT.put_line(err_msg);
dbms_output.put_line ('Nuevo Valor: '|| result_3)
END;
Saludos