Mysql Laravel 5.2-数据包无序
我在MySQL中有一个带有两个嵌套游标的存储过程。当我试图调用它时,我得到的错误包是无序的-预期1收到4 存储过程代码:Mysql Laravel 5.2-数据包无序,mysql,laravel-5.2,Mysql,Laravel 5.2,我在MySQL中有一个带有两个嵌套游标的存储过程。当我试图调用它时,我得到的错误包是无序的-预期1收到4 存储过程代码: BEGIN DECLARE num_clientes INT DEFAULT 0; DECLARE nInicio DATE; DECLARE nFin DATE; DECLARE nIdCliente INT; DECLARE clientCounter INT; DECLARE auxDias INT; DECLARE
BEGIN
DECLARE num_clientes INT DEFAULT 0;
DECLARE nInicio DATE;
DECLARE nFin DATE;
DECLARE nIdCliente INT;
DECLARE clientCounter INT;
DECLARE auxDias INT;
DECLARE finClientes BOOLEAN;
DECLARE finContratos BOOLEAN;
DECLARE porcentaje DOUBLE;
DECLARE clientes_proyecto CURSOR FOR SELECT id FROM clientes WHERE id_proyecto = selProyecto;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finClientes = TRUE;
SET num_clientes = (SELECT COUNT(clientes.id) from clientes WHERE id_proyecto = selProyecto);
-- Declaración de un manejador de error tipo NOT FOUND
OPEN clientes_proyecto;
loop_clientesProyecto: LOOP
-- Recogemos la id del Cliente
FETCH clientes_proyecto INTO nIdCliente;
-- Reseteamos los días trabajados
SET auxDias = 0;
BLOCK2: BEGIN
DECLARE cliContratos CURSOR FOR SELECT fecha_inicio, fecha_fin FROM contratos_clientes WHERE id_cliente = nIdCliente;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finContratos = TRUE;
-- Abrimos un segundo cursor para iterar los contratos de ese cliente
OPEN cliContratos;
loop_contratos: LOOP
FETCH cliContratos INTO nInicio, nFin;
IF nFin < CURDATE() THEN
SET auxDias = auxDias + Datediff(nInicio, nFin);
ELSE
SET auxDias = auxDias + Datediff(nInicio, CURDATE());
END IF;
IF finContratos THEN
LEAVE loop_contratos;
END IF;
END LOOP loop_contratos;
CLOSE cliContratos;
END BLOCK2;
-- Ya tenemos los días trabajados del cliente, realizamos el cálculo del porcentaje
SET porcentaje = porcentaje + ((((auxDias)/90)*(100/num_clientes))/100);
IF finClientes THEN
LEAVE loop_clientesProyecto;
END IF;
END LOOP loop_clientesProyecto;
CLOSE clientes_proyecto;
SELECT porcentaje;
END
在这个过程中,我迭代我的clients表,然后在游标内迭代他的合同,计算他工作的天数,然后计算百分比。此百分比是存储过程的返回值
在我的PHP代码中,我只执行DB::select'CALL-procentaje_-contracion3'
为什么会这样?我不知道乱包是什么意思