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









