Mysql Laravel 5.2-数据包无序

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

我在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 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'

为什么会这样?我不知道乱包是什么意思