Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

debuger

Estas en el tema de debuger en el foro de Mysql en Foros del Web. Hola una vez más, En la aplicación "MySQL Query Browser" quiero debugar un procedure que tengo en un editor script, pero no lo se como ...
  #1 (permalink)  
Antiguo 01/10/2009, 05:17
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
debuger

Hola una vez más,
En la aplicación "MySQL Query Browser" quiero debugar un procedure que tengo en un editor script, pero no lo se como hacer. Veo que tiene un par de botones step y continue pero no las se utilizar. Alguién tiene alguna idea ? Hay alguna manera de ver los valores de las variables en cada momento ?
Gracias y si no se ha entendido no hay problema de volver a explicar.
  #2 (permalink)  
Antiguo 01/10/2009, 07:29
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: debuger

A nivel de base de datos esto sería muy útil.
Pero no creo que exista una herramienta similar. Yo la he buscado para otros motores múltiples veces sin éxito.

Para pruebas, yo pongo a retornar cada variable paso por paso y detectar asi en que parte se cae.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 01/10/2009, 07:45
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: debuger

Cita:
Para pruebas, yo pongo a retornar cada variable paso por paso y detectar asi en que parte se cae.
me podrias poner un ejemplo, huesos52 ?
Gracias.
  #4 (permalink)  
Antiguo 01/10/2009, 07:52
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: debuger

pon el procedure que quieres analizar paso a paso y te explico como.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 01/10/2009, 08:06
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: debuger

Cita:
DELIMITER $$
DROP FUNCTION IF EXISTS SI.SOLO_CARACTERES $$
CREATE FUNCTION SI.SOLO_CARACTERES (VAR CHAR(100)) RETURNS CHAR(100)
DETERMINISTIC
BEGIN
DECLARE POS INT DEFAULT 1;
DECLARE TOTAL CHAR(100) DEFAULT '';
DECLARE VALOR INT DEFAULT 0;
REPEAT
IF INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', SUBSTRING(VAR, POS, 1))>0 THEN
SET TOTAL = CONCAT(TOTAL,SUBSTRING(VAR, POS, 1));
END IF;
SET POS = POS + 1;
UNTIL POS > LENGTH(VAR) END REPEAT;

IF (TOTAL='INSERTAR') THEN
INSERT INTO SI.rango_facturas
SELECT *
FROM rangos A
WHERE A.Funcion='F';
END IF;

RETURN TOTAL;

END $$
DELIMITER ;
  #6 (permalink)  
Antiguo 01/10/2009, 08:16
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: debuger

Lo que quieres es hacer una función que recoja el campo y elimine los números no? Estas acomodando la función que te pasó gnzsoloyo?

Lo que te digo yo, es retornar primero la variable pos y asegurarse que efectivamente corresponda al numero de caracteres de la palabra de entrada. Si la retorna bien, puedes ir avanzando hacia total.


ten en cuenta que esta función solo te realizaría el insert si metieras una palabra como insert2a1r o insertar123.
El insert no lo veo muy claro, pero tu entenderás que deseas hacer y lo que requieres.

Si tratas de hacer una función para dejar solo letras me avisas y te ayudo a acomodar la función.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 01/10/2009, 08:28
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: debuger

Yo el caso insert2a1r no querría pero bueno,
Aún así mi duda es la siguiente como debugearía este código fila a fila ? para saber que hace lo que te interesa ?
Gracias.
  #8 (permalink)  
Antiguo 01/10/2009, 08:36
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: debuger

Documentando todas las lineas y retornando los valores uno a uno. Es un poco tedioso, pero eso es lo que yo hago.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 01/10/2009, 08:44
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: debuger

Si me pones un ejemplillo te dejo en paz jejejeje.
Gracias.
  #10 (permalink)  
Antiguo 01/10/2009, 09:29
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: debuger

Código SQL:
Ver original
  1. DELIMITER $$
  2. DROP FUNCTION IF EXISTS SI.SOLO_CARACTERES $$
  3. CREATE FUNCTION SI.SOLO_CARACTERES (VAR CHAR(100)) RETURNS CHAR(100)
  4. DETERMINISTIC
  5. BEGIN
  6. DECLARE POS INT DEFAULT 1;
  7. DECLARE TOTAL CHAR(100) DEFAULT '';
  8. DECLARE VALOR INT DEFAULT 0;
  9. REPEAT
  10. IF INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', SUBSTRING(VAR, POS, 1))>0 THEN
  11. SET TOTAL = CONCAT(TOTAL,SUBSTRING(VAR, POS, 1));
  12. END IF;
  13. SET POS = POS + 1;
  14. UNTIL POS > LENGTH(VAR) END REPEAT;
  15.  
  16. --IF (TOTAL='INSERTAR') THEN
  17. --INSERT INTO SI.rango_facturas
  18. --SELECT *
  19. --FROM rangos A
  20. --WHERE A.Funcion='F';
  21. --END IF;
  22.  
  23. RETURN POS;
  24.  
  25. END $$
  26. DELIMITER ;

Si ingresas palabra 'prueba' y la variable pos se retorna con un 6, ya sabes que está recorriendo bien el repeat.

En conclusión, de esta función que quieres observar o debbuguear?

Código mysql:
Ver original
  1. mysql> use pruebas
  2. Database changed
  3. mysql> DELIMITER $$
  4. mysql> DROP FUNCTION IF EXISTS SOLO_CARACTERES $$
  5. Query OK, 0 rows affected, 1 warning (0.00 sec)
  6.  
  7. mysql> CREATE FUNCTION SOLO_CARACTERES (VAR CHAR(100)) RETURNS CHAR(100)
  8.     -> DETERMINISTIC
  9.     -> BEGIN
  10.     -> DECLARE POS INT DEFAULT 1;
  11.     -> DECLARE TOTAL CHAR(100) DEFAULT '';
  12.     -> DECLARE VALOR INT DEFAULT 0;
  13.     -> REPEAT
  14.     -> IF INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', SUBSTRING(VAR, POS, 1))>0 THEN
  15.     -> SET TOTAL = CONCAT(TOTAL,SUBSTRING(VAR, POS, 1));
  16.     -> END IF;
  17.     -> SET POS = POS + 1;
  18.     -> UNTIL POS > LENGTH(VAR) END REPEAT;
  19.     ->
  20.     -> --IF (TOTAL='INSERTAR') THEN
  21.     -> --INSERT INTO SI.rango_facturas
  22.     -> --SELECT *
  23.     -> --FROM rangos A
  24.     -> --WHERE A.Funcion='F';
  25.     -> --END IF;
  26.     ->
  27.     -> RETURN TOTAL;
  28.     ->
  29.     -> END $$
  30. Query OK, 0 rows affected (0.02 sec)
  31.  
  32. mysql> DELIMITER ;
  33. mysql> select solo_caracteres('dan12');
  34. +--------------------------+
  35. | solo_caracteres('dan12') |
  36. +--------------------------+
  37. | dan                      |
  38. +--------------------------+
  39. 1 row in set (0.00 sec)
  40.  
  41. mysql> select solo_caracteres('insertar1234');
  42. +---------------------------------+
  43. | solo_caracteres('insertar1234') |
  44. +---------------------------------+
  45. | insertar                        |
  46. +---------------------------------+
  47. 1 row in set (0.00 sec)
  48.  
  49. mysql> select solo_caracteres('ins456ertar1234');
  50. +------------------------------------+
  51. | solo_caracteres('ins456ertar1234') |
  52. +------------------------------------+
  53. | insertar                           |
  54. +------------------------------------+
  55. 1 row in set (0.00 sec)
  56.  
  57. mysql>

Yo la veo trabajando bien
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 05/10/2009, 09:08
 
Fecha de Ingreso: junio-2009
Mensajes: 174
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: debuger

Alguien me puede facilitar el buen uso de los botones 'step' y 'continue' , de la aplicación MySQL Query Browser ?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:12.