Ver Mensaje Individual
  #14 (permalink)  
Antiguo 17/11/2011, 17:23
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: mostrar o imprimir mensajes en mysql 5.0

Bueno, he probado el resultado del SP que te propuse, funcionando sobre consola y sobre Workbench, y el resultado es óptimo.
Código MySQL:
Ver original
  1. mysql> DELIMITER $$
  2. mysql> DROP PROCEDURE IF EXISTS `simpleproc`$$
  3. Query OK, 0 rows affected (0.00 sec)
  4.  
  5. mysql> CREATE PROCEDURE `simpleproc`()
  6.     -> BEGIN
  7.     -> SET @a = 0;
  8.     -> SELECT COUNT(*) INTO @a FROM citas;
  9.     -> END$$
  10. Query OK, 0 rows affected (0.00 sec)
  11.  
  12. mysql> DELIMITER ;
  13. mysql> CALL `simpleproc`();
  14. Query OK, 0 rows affected (0.11 sec)
  15.  
  16. mysql> SELECT CAST(@a AS UNSIGNED) RESULTADO;
  17. +-----------+
  18. | RESULTADO |
  19. +-----------+
  20. |         6 |
  21. +-----------+
  22. 1 row in set (0.00 sec)
  23.  
  24. mysql>
  25. mysql> DELIMITER $$
  26. mysql> DROP PROCEDURE IF EXISTS `simpleproc`$$
  27. Query OK, 0 rows affected (0.03 sec)
  28.  
  29. mysql> CREATE PROCEDURE `simpleproc`()
  30.     -> BEGIN
  31.     -> SET @a = 'ESTE SERÍA EL MENSAJE QUE SE CREA EN EL TRIGGER';
  32.     -> END$$
  33. Query OK, 0 rows affected (0.00 sec)
  34.  
  35. mysql> DELIMITER ;
  36. mysql> CALL `simpleproc`();
  37. Query OK, 0 rows affected (0.00 sec)
  38.  
  39. mysql> SELECT @a MENSAJE;
  40. +-------------------------------------------------+
  41. | MENSAJE                                         |
  42. +-------------------------------------------------+
  43. | ESTE SERÍA EL MENSAJE QUE SE CREA EN EL TRIGGER |
  44. +-------------------------------------------------+
  45. 1 row in set (0.00 sec)
La única recomendación es que como lo vas a manejar en un TRIGGER, no lo puedes mandar como parámetro, sino directamente tomar el resultado, sabiendo que el TRIGGER se ejecutó y por tanto la variable existe.
La sintaxis de este ejemplo es:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE IF EXISTS `simpleproc`$$
  3. CREATE PROCEDURE `simpleproc`()
  4. SET @a = 0;
  5. SELECT COUNT(*) INTO @a FROM citas;
  6. END$$
  7. DELIMITER ;
Como verás, la variable la estoy creando dentro del SP, pero eso no importa porque la variable existe dentro de la conexión mientras esta esté abierta. Incluso, la variable sigue existiendo y con el mismo valor hasta que se la vuelve a invocar. Por eso es importante reincializarla cada vez que se va a usar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)