Consultas anidadas en MYSQL
Publicado por Elena (1 intervención) el 25/09/2008 10:22:11
Hola a todos, estoy empezando con Mysql y tengo un problema que no se resolver. Os estaría muy agradecida si pudiérais ayudarme.
En mi procedimiento almacenado tengo que lanzar dos consultas anidadas, lo típico de... 'para cada LINEA búscame todos el INVENTARIO asociado y realiza un determinado tratamiento'.
He creado un CURSOR con un LOOP y un manejador HANDLER de la forma:
DECLARE datos_linea CURSOR...
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_rows = TRUE;
OPEN datos_linea;
loop_datos_linea: LOOP
FETCH datos_linea
INTO ...
IF no_more_rows THEN
CLOSE datos_linea;
LEAVE loop_datos_linea;
END IF;
...
BEGIN
DECLARE datos_inventario CURSOR FOR ...
OPEN datos_inventario;
loop_datos_inventario: LOOP
FETCH datos_inventario
INTO ...
IF no_more_rows THEN
CLOSE datos_inventario;
LEAVE loop_datos_inventario;
END IF;
END LOOP loop_datos_inventario;
END;
END LOOP loop_datos_linea;
En fin, el problema es que con un HANDLER NOT FOUND quiero tratar dos consultas (una dentro de otra) y se sale del bucle externo cuando termina una de las iteraciones del interno.
No se si me he explicado bien, pero... ¿podríais ayudarme por favor?
Gracias de antemano
En mi procedimiento almacenado tengo que lanzar dos consultas anidadas, lo típico de... 'para cada LINEA búscame todos el INVENTARIO asociado y realiza un determinado tratamiento'.
He creado un CURSOR con un LOOP y un manejador HANDLER de la forma:
DECLARE datos_linea CURSOR...
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_rows = TRUE;
OPEN datos_linea;
loop_datos_linea: LOOP
FETCH datos_linea
INTO ...
IF no_more_rows THEN
CLOSE datos_linea;
LEAVE loop_datos_linea;
END IF;
...
BEGIN
DECLARE datos_inventario CURSOR FOR ...
OPEN datos_inventario;
loop_datos_inventario: LOOP
FETCH datos_inventario
INTO ...
IF no_more_rows THEN
CLOSE datos_inventario;
LEAVE loop_datos_inventario;
END IF;
END LOOP loop_datos_inventario;
END;
END LOOP loop_datos_linea;
En fin, el problema es que con un HANDLER NOT FOUND quiero tratar dos consultas (una dentro de otra) y se sale del bucle externo cuando termina una de las iteraciones del interno.
No se si me he explicado bien, pero... ¿podríais ayudarme por favor?
Gracias de antemano
Valora esta pregunta


0