Oracle PL/SQL – Debug usando tabla de apoyo
Comienzo hoy a postear sobre nuevos aspectos relacionados con “Metsu” en este caso con la programación, truquillos, rutinas y pequeñas utilidades que puedan ser de ayuda y que van surgiendo del dia a dia ante el teclado viento en nuca y en duermevela cuan desarrollador mercantil xDDD.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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 de apoyo tabla de DEBUG_LOG se puede crear mediante el uso del siguiente script:
1 2 3 4 5 6 | CREATE TABLE DEBUG_LOG ( CUANDO DATE, TEXTO VARCHAR2(2000), DONDE VARCHAR2(2000) ) |
Espero que les resulte de utilidad, si tienen sugerencias o mejoras en mente compartanlas con todos nosotros , estoy seguro que de ese intercambio surgirán cuestiones interesantes.










Pueden consultar mis 