Metsu 3.0

Ad astra per aspera

Oracle PL/SQL – Debug usando tabla de apoyo

Filed under: Programacion — metsuke at 3:15 am on Thursday, November 6, 2008

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.

  • Print
  • email
  • Google Bookmarks
  • Digg
  • BarraPunto
  • Technorati
  • Slashdot
  • del.icio.us
  • Facebook
  • Reddit
  • Sphinn
  • Mixx
  • Live
  • MySpace
  • Ping.fm
  • Twitter
  • Bitacoras.com
  • Faves
  • Furl
  • Identi.ca
  • N4G
  • LinkedIn
  • Netvibes
  • StumbleUpon
  • Haohao
  • MSN Reporter
  • PDF
  • RSS
  • SphereIt
  • Wikio
  • Socialogs

3 Comments »

205

Comment by Luis

February 28, 2009 @ 5:28 am

Una pregunta ¿Existe algun programa para correr paso a paso los procedimientos de oracle?

206

Comment by metsuke

February 28, 2009 @ 11:10 am

Luis, lo cierto es que lo desconozco, al menos que haya llegado a mi conocimiento no , por eso puse en marcha este concepto, que me permite “ver” lo que hace el procedimiento escribiendo en tabla.

No obstante no descarto que exista , si aparece algo lo comentare en el blog, me vendria a mi tambien de perlas :)

408

Comment by metsuke

February 17, 2010 @ 3:00 pm

Luis, releyendo los comentarios acabo de acordarme de que Toad permitia esa funcionalidad. No estoy 100% seguro pero me suena que si (hace tiempo que no toco PL).

RSS feed for comments on this post.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">