lunes, 12 de septiembre de 2011

USO DE SQLCODE Y SQLERRM

Al manejar una excepción es posible usar las funciones predefinidas SQLCode y SQLERRM para aclarar al usuario la situación de error acontecida.
    SQLcode devuelve el número del error de Oracle y un 0 (cero) en caso de exito al ejecutarse una sentencia SQL.
    Por otra parte, SQLERRM devuelve el correspondiente mensaje de error.
    Estas funciones son muy útiles cuando se utilizan en el bloque de excepciones, para aclarar el significado de la excepción OTHERS.
    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;
También es posible entregarle a la función SQLERRM un número negativo que represente un error de Oracle y ésta devolverá el mensaje asociado.
DECLARE
  msg VARCHAR2(255);
BEGIN

  msg := SQLERRM(-1403);
  DBMS_OUTPUT.put_line(MSG);
END;

No hay comentarios:

Publicar un comentario