Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/07/2010, 03:59
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: Procedimiento almacenado dentro de otro procedimiento almacenado

Stored invocado desde otro:

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `SP_prueba1` $$
  4. CREATE PROCEDURE `SP_prueba1` (OUT a INT)
  5.   SELECT campo1 INTO a
  6.   FROM tabla
  7.   WHERE idtabla = 3;
  8. END $$
  9.  
  10. DELIMITER ;

Stored que invoca a otro:

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `SP_prueba2` $$
  4. CREATE PROCEDURE `SP_prueba2` ()
  5.   DECLARE A INT;
  6.   CALL SP_prueba1(A);
  7.   INSERT INTO tabla2(campo2)
  8.   VALUES(A);
  9. END $$
  10.  
  11. DELIMITER ;

Los SP tienen que ser creados en el orden correcto: Los invocados primero, los invocantes después, porque el parser de MySQL comprobará toda llamada a funcion o procedimiento que tenga dentro.
Esa es más o menos la idea central.

Nota: En ambos casos fueron escritos con el MySQL Query Browser y están preparados para ser cargados como script .
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)