jueves, 6 de noviembre de 2008

Oracle PL/SQL - Debug usando tabla de apoyo

Hoy les traigo una pequeña utilidad que les permitira incluir de una forma sencilla un pequeño sistema de Debug para Oracle PL/SQL que este basado además de en el archiconocido dbms, en una tabla de apoyo que sirva para poder registrar el desempeño de un determinado bloque de código a lo largo del tiempo, facilitandonos las tareas de depuración.

CREATE OR REPLACE PROCEDURE "P_DEBUG_LOG" (donde IN VARCHAR2,texto IN VARCHAR2) IS

-- Raul Carrillo Garrido aka metsuke - www.metsuke.com
-- Released Under LGPL License v3 (http://www.gnu.org/copyleft/lesser.html)

withDbms BOOLEAN := TRUE;
withTable BOOLEAN := FALSE;
cuando DATE := SYSDATE;

BEGIN

IF (withTable) THEN
INSERT INTO DEBUG_LOG (CUANDO,TEXTO,DONDE) VALUES (cuando,texto,donde);
END IF;

IF (withDbms) THEN
DBMS_OUTPUT.put_line('(' TO_CHAR(cuando,'DD/MM/YY HH24:MI:SS') ') - ' donde ' - ' texto );
END IF;

EXCEPTION

WHEN OTHERS THEN

-- Do nothing. Es para debug, si falla algo no quiero que el debug interrumpa el funcionamiento de la aplicación.
-- en todo caso si ejecutamos al menos un dbms para aprovechar y que el proceso informe.
DBMS_OUTPUT.put_line('Se ha producido un error en P_DEBUG_LOG ' SQLERRM);

END;



La tabla de DEBUG_LOG se puede crear mediante el uso del siguiente script:


CREATE TABLE DEBUG_LOG
(
CUANDO DATE,
TEXTO VARCHAR2(2000),
DONDE VARCHAR2(2000)
)

No hay comentarios: