Solución:
El seguimiento debug_msg
se puede llamar al procedimiento para simplemente enviar un mensaje de depuración a la consola:
DELIMITER $$
DROP PROCEDURE IF EXISTS `debug_msg`$$
DROP PROCEDURE IF EXISTS `test_procedure`$$
CREATE PROCEDURE debug_msg(enabled INTEGER, msg VARCHAR(255))
BEGIN
IF enabled THEN
select concat('** ', msg) AS '** DEBUG:';
END IF;
END $$
CREATE PROCEDURE test_procedure(arg1 INTEGER, arg2 INTEGER)
BEGIN
SET @enabled = TRUE;
call debug_msg(@enabled, 'my first debug message');
call debug_msg(@enabled, (select concat_ws('','arg1:', arg1)));
call debug_msg(TRUE, 'This message always shows up');
call debug_msg(FALSE, 'This message will never show up');
END $$
DELIMITER ;
Luego ejecute la prueba de esta manera:
CALL test_procedure(1,2)
Dará como resultado la siguiente salida:
** DEBUG:
** my first debug message
** DEBUG:
** arg1:1
** DEBUG:
** This message always shows up
Hago algo muy parecido a ti.
Por lo general, incluiré un parámetro DEBUG cuyo valor predeterminado es falso y puedo establecerlo en verdadero en tiempo de ejecución. Luego, envuelva las declaraciones de depuración en un bloque “If DEBUG”.
También utilizo una tabla de registro con muchos de mis trabajos para poder revisar los procesos y los tiempos. Mi código de depuración también se genera allí. Incluyo el nombre del parámetro de llamada, una breve descripción, los recuentos de filas afectados (si corresponde), un campo de comentarios y una marca de tiempo.
Las buenas herramientas de depuración son una de las lamentables fallas de todas las plataformas SQL.
Sí, existe una herramienta especializada para este tipo de cosas: MySQL Debugger.