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

Procedimiento almacenado dentro de otro procedimiento almacenado

Estas en el tema de Procedimiento almacenado dentro de otro procedimiento almacenado en el foro de Mysql en Foros del Web. Buenos días, Os quería hacer una pregunta y voy por partes: Necesito realizar un procedimiento almacenado llamemoslo "x". Dicho procedimiento almacenado deberá llamar a otro ...
  #1 (permalink)  
Antiguo 27/07/2010, 02:36
 
Fecha de Ingreso: junio-2010
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 0
Procedimiento almacenado dentro de otro procedimiento almacenado

Buenos días,

Os quería hacer una pregunta y voy por partes:
Necesito realizar un procedimiento almacenado llamemoslo "x". Dicho procedimiento almacenado deberá llamar a otro procedimiento almacenado llamemoslo "y" que me devuelva varias variables de una tabla las cuales utilizaré en "x" para poder modificar una tabla.

¿Alguien me puede ayudar?

Un saludo
  #2 (permalink)  
Antiguo 27/07/2010, 04:08
Avatar de 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

El pleanteo general es simple: Si el segundo procedimiento debe devover valores en n variables, esas variables deben volver en el prototipo del segundo procedimiento y eso sólo necesita que en ese procedimiento las variables de entrada sean INOUT o sino OUT.
Nada más.
Pero sería buena idea que postearas lo que has hecho hasta ahora para saber qué es lo que realmente estás intentando.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/07/2010, 02:29
 
Fecha de Ingreso: junio-2010
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado dentro de otro procedimiento almacenado

Actualmente tengo poco hecho. Por eso me gustaría ver un ejemplo de un procedimiento almacenado que devuelva varios campos, los cuales se usen en otro procedimiento almacenado.

Muchas gracias
  #4 (permalink)  
Antiguo 28/07/2010, 03:59
Avatar de 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)
  #5 (permalink)  
Antiguo 28/07/2010, 04:09
 
Fecha de Ingreso: junio-2010
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado dentro de otro procedimiento almacenado

Thank you very much

Etiquetas: procedimiento, almacenar
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 12:26.