Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/03/2014, 07:12
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: Problema con Stored Procedured

Cinco errores:
1) Toda declaración de objetos de tipo CURSOR debe hacerse antes de la ejecutción de cualquier otra sentencia SQL.
2) No creaste un HANDLER, por lo que tendrás problemas.
3) REPEAT no debe ir en la misma línea de la sentencia siguiente.
4) Todo llamado a un SP desde otro se hace por medio de CALL.
5) No existen los SP recursivos en MySQL, por lo que lo que estás intentando fallará.
Código SQL:
Ver original
  1. SET @@GLOBAL.max_sp_recursion_depth = 255;
  2. SET @@SESSION.max_sp_recursion_depth = 255;
  3.  
  4. DELIMITER $$
  5. DROP PROCEDURE IF EXISTS control_activo_datos_dependencias_sp$$
  6.  
  7. CREATE PROCEDURE control_activo_datos_dependencias_sp (IN ID INT)
  8. BEGIN
  9.  
  10.     DECLARE var_idactivo INT;
  11.     DECLARE var_act_idactivo INT;
  12.     DECLARE var_dependencia INT;
  13.     DECLARE HIJOS CURSOR FOR SELECT idactivo, act_idactivo, tipodependencia FROM DEPENDENCIA WHERE idactivo = ID;
  14.  
  15.     INSERT INTO dependencia_temp SELECT idactivo, act_idactivo, tipodependencia FROM DEPENDENCIA WHERE idactivo = ID;
  16.  
  17.     OPEN HIJOS;
  18.     REPEAT
  19.         FETCH HIJOS INTO var_idactivo, var_act_idactivo, var_dependencia;
  20.         CALL control_activo_datos_dependencias_sp(var_act_idactivo);
  21.     UNTIL done END REPEAT;
  22.     CLOSE HIJOS;
  23.  
  24. END$$
  25. 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)