MySQL - #2014 - Commands out of sync; you can't run this command now

 
Vista:

#2014 - Commands out of sync; you can't run this command now

Publicado por Pedro (1 intervención) el 21/12/2020 13:13:31
Buenos dias, necesito ayuda, la verdad es que me estoy volviendo loco. Necesito recorrer una lista de envios a realizar, lo estoy haciendo con un cursor, para luego uno a uno comprobar stock y enviarlo.
Lo he montado con un procedimiento almacenado y cursores, cuando lo lanzo desde la opcion ejecuctar del phpmyadmin me funciona correctamente pero cuando lo ejecuto con CALL `GeneracionSalidaPedidoLaboratorio_pruebas`('17', '2020-12-13') me da el error "#2014 - Commands out of sync; you can't run this command now".

Este codigo solo saca por pantalla el codigo de destino y el codigo de producto, pero genera la misma casuistica de error.



Me podeis ayudar, Gracias,

BEGIN
DECLARE findelbucle INTEGER DEFAULT 0;
DECLARE CONT INT;
DECLARE vcodproducto int;
DECLARE vcoddestino int;
DECLARE vcodentrega int;
DECLARE vprefarmacia int;
DECLARE vemisor int;
DECLARE vreceptor int;
DECLARE vpreunidades int;
DECLARE cantidad int;
DECLARE vcodorigen int;
DECLARE vcantasignadapetlab int;

DECLARE EnviosaRealizar cursor for
select codfarmacia,codproducto,codentrega, cantidadarecibir,cantasignadapetlab from tmp_enviosarealizar ;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET findelbucle=1;
/* creo la tabla temporal para incluir los datos candidatos para generar los albaranes*/

CREATE TABLE IF NOT EXISTS tmp_enviosarealizar(
codfarmacia int(11),
codproducto int(11),
codentrega int(11),
cantidadarecibir int(11),
cantasignadapetlab int(11)
);

delete from tmp_enviosarealizar;

insert into tmp_enviosarealizar
select pendientes.codfarmacia,pendientes.codproducto,pendientes.codentrega,pendientes.cantidadarecibir - coalesce(entregados.cantidadrecibida,0) as cantidadarecibir,pendientes.cantasignadapetlab from
(SELECT codfarmacia, codproducto,codentrega,sum(cantidadarecibir) as cantidadarecibir,sum(cantasignadapetlab) as cantasignadapetlab
FROM `pedidos`
inner join detpedido on pedidos.codpedido=detpedido.codpedido
WHERE pedidos.codpedido=codigopedido and cantidadarecibir >0
and codentrega=(select codentrega from entregas where fechaentrega=FECHA )
and cantasignadapetlab=0
group by codfarmacia, codproducto,codentrega) as pendientes
left join
(SELECT codreceptor as codfarmacia, codproducto,codentrega,sum(cantidad) as cantidadrecibida FROM `albaranes` inner join detalbaran on (albaranes.codalbaran=detalbaran.codalbaran and albaranes.tipoalbaran=detalbaran.tipoalbaran) inner join pedidos on (albaranes.codpedido=pedidos.codpedido) WHERE albaranes.codclasealbaran=3 and pedidos.codpedido=codigopedido and codentrega=(select codentrega from entregas where fechaentrega=FECHA ) group by codreceptor, codproducto,codentrega) as entregados
on (pendientes.codfarmacia=entregados.codfarmacia and pendientes.codproducto=entregados.codproducto and pendientes.codentrega=entregados.codentrega)
where pendientes.cantidadarecibir - coalesce(entregados.cantidadrecibida,0) >0;



CREATE TABLE IF NOT EXISTS TMP_albaranesagenerar ( codfarmaciaorigen INT(11),
codfarmaciadestino INT(11),
codproducto INT(11),
unidades INT(11)
);

delete from TMP_albaranesagenerar;
insert into TMP_albaranesagenerar
SELECT codfarmacia, codfarmacia, codproducto,sum(cantidadarecibir)*-1
FROM `pedidos`
inner join detpedido on pedidos.codpedido=detpedido.codpedido
WHERE pedidos.codpedido=codigopedido and cantidadarecibir >0
and codentrega=(select codentrega from entregas where fechaentrega=FECHA )
and detpedido.cantasignadapetlab>0
group by codfarmacia, codproducto;


OPEN EnviosaRealizar;
loop1: LOOP
FETCH EnviosaRealizar INTO vcoddestino,vcodproducto,vcodentrega,cantidad,vcantasignadapetlab;

IF findelbucle = 1 THEN
LEAVE loop1;
End if;

select vcoddestino,vcodproducto;


end loop loop1;
close EnviosaRealizar;

END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder