Tip - Trick - Oracle - PLSQL - mostrar el número de línea donde se produce el error

Esto ayuda a los que desarrollamos aplicaciones web con acceso a base de datos ORACLE. A partir de la versión de Oracle 10g, tenemos una función que devuelve una cadena de texto con el número de línea donde se ha producido un error, hacemos un ejemplo en la pestaña SQL Editor del TOAD con un bloque anónimo, en donde provocaremos un error comparando un valor númerico (NUMBER) con una cadena de texto:

El código de nuestro pequeño bloque anónimo es el siguiente:


DECLARE
   dummy NUMBER := 0;
BEGIN
    if dummy = 'alfa'
    then
        dbms_output.put_line('if');
    else
        dbms_output.put_line('else');
    end if;
EXCEPTION
   WHEN OTHERS THEN
      dbms_output.put_line(sqlerrm);
      dbms_output.put_line(DBMS_UTILITY.format_error_backtrace);
END;

Lo que se muestra en el DBMS_OUTPUT es:

ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 4

El SQLERRM como todos sabemos nos devuelve el mensaje de error, y DBMS_UTILITY.format_error_backtrace nos recupera el número de línea donde esta ocurriendo el error, si el código del EXCEPTION:


dbms_output.put_line(sqlerrm);
dbms_output.put_line(DBMS_UTILITY.format_error_backtrace);

estuviera en un paquete (package) el mensaje seria de la forma:

ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at “IDENTIFICADOR_PACKAGE.IDENTIFICADOR_PROCEDIMIENTO_FUNCION”, line 4

Esto es muy útil al momento de tracear errores en tiempo de ejecución y en el manejo de excepciones, ya que no solo sabemos la descripción del error sino que también sabemos el número de la línea de nuestro paquete donde sucedio.

Sin comentarios

No comments yet

Leave a reply