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 originalSET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@SESSION.max_sp_recursion_depth = 255;
DELIMITER $$
DROP PROCEDURE IF EXISTS control_activo_datos_dependencias_sp$$
CREATE PROCEDURE control_activo_datos_dependencias_sp (IN ID INT)
BEGIN
DECLARE var_idactivo INT;
DECLARE var_act_idactivo INT;
DECLARE var_dependencia INT;
DECLARE HIJOS CURSOR FOR SELECT idactivo, act_idactivo, tipodependencia FROM DEPENDENCIA WHERE idactivo = ID;
INSERT INTO dependencia_temp SELECT idactivo, act_idactivo, tipodependencia FROM DEPENDENCIA WHERE idactivo = ID;
OPEN HIJOS;
REPEAT
FETCH HIJOS INTO var_idactivo, var_act_idactivo, var_dependencia;
CALL control_activo_datos_dependencias_sp(var_act_idactivo);
UNTIL done END REPEAT;
CLOSE HIJOS;
END$$
DELIMITER ;