Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/12/2010, 20:41
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: ayuda con SP varias consultas..

Tienes que mirar mejor la sintaxis de los stored procedures. Estás poniendo los delimitadores en cualquier parte.
El proceso no tiene mucho sentido a menos que la estructura de las tablas fuese la misma.
¿Es así? De serlo podría andar por aquí:
Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `getRule` $$
  4. CREATE DEFINER=`root`@`localhost` PROCEDURE `getRule`(IN idrule INTEGER)
  5.       SELECT * FROM preguntas WHERE idreglas = idrule
  6.       UNION
  7.       SELECT * FROM normales WHERE idreglas = idrule
  8.       UNION
  9.       SELECT * FROM juegos WHERE idreglas = idrule
  10.       UNION
  11.       SELECT * FROM valores WHERE idreglas = idrule;
  12. END $$
  13.  
  14. DELIMITER ;

Si tienen diferente estructura, no puede hacerse un UNION, pero tampoco puedes hacer un procedure que devuelva varios SELECTS. Sólo puede devolver un único resultado, tal vez algo así:

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `getRule` $$
  4. CREATE DEFINER=`root`@`localhost` PROCEDURE `getRule`(IN idrule INTEGER)
  5.       IF (SELECT COUNT(*) FROM preguntas WHERE idreglas = idrule) > 0 THEN
  6.             SELECT *
  7.             FROM preguntas
  8.             WHERE idreglas = idrule;
  9.       ELSEIF (SELECT COUNT(*) FROM normales WHERE idreglas = idrule) > 0 THEN
  10.             SELECT *
  11.             FROM normales
  12.             WHERE idreglas = idrule;
  13.       ELSEIF (SELECT COUNT(*) FROM juegos WHERE idreglas = idrule) > 0 THEN
  14.             SELECT *
  15.             FROM juegos
  16.             WHERE idreglas = idrule;
  17.       ELSE
  18.             SELECT *
  19.             FROM valores
  20.             WHERE idreglas = idrule;
  21.       END IF;
  22. END $$

DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)