当我尝试从php代码中调用2个存储过程时,我得到了这个错误....
我怎么打这两个电话?我可以用哪种方法??谢谢你! !
错误:Error Number: 2014
Commands out of sync; you can't run this command now
当我调用函数…
$aFrecClientes = $this->summary_model->get_frecClientes($this->session->userdata('USER_ID'));
$aResumenAnual = $this->summary_model->get_resumenAnual($anyo,$this->session->userdata('USER_ID'));
My calls' functions:
public function get_frecClientes($id_empresa){
$oQuery = $this->db->query("CALL GET_FRECUENCIACLIENTES(1);");
$aResult = $oQuery->result_array();
return $aResult;
}
public function get_resumenAnual(){
$oQuery = $this->db->query("CALL GET_RESUMENANUAL (1, 102);");
$aResult = $oQuery->result_array();
return $aResult;
}
和我的存储过程:
BEGIN
SELECT uu.MES, SUM(uu.INGRESOS) INGRESOS, SUM(uu.GASTOS) GASTOS, SUM(uu.INGRESOS)-SUM(uu.GASTOS) RESULTAT
FROM (
-- INGRESOS
SELECT MONTH(FECHA) MES,
SUM(F.TOTALFACTURA) INGRESOS,
0 GASTOS
FROM FACTURASCLIENTES F
LEFT JOIN CLIENTES C ON C.IDCLIENTE = F.IDCLIENTE
WHERE C.IDEMPRESA = IDEMPRESA
AND F.FECHABORRADO IS NULL AND YEAR(FECHA)=ANYO
GROUP BY MONTH(FECHA)
UNION
SELECT MONTH(FECHA) MES,
SUM(IMPORTE) INGRESOS,
0 GASTOS
FROM TICKETS
INNER JOIN TIPOSTICKETS on (TICKETS.IDTIPOTICKET = TIPOSTICKETS.IDTIPOTICKET)
INNER JOIN TRADUCCIONES on (TIPOSTICKETS.IDTRADUCCION = TRADUCCIONES.IDTRADUCCION AND TIPOSTICKETS.IDTRADUCCIONTABLA = TRADUCCIONES.IDTRADUCCIONTABLA )
WHERE IDEMPRESA = IDEMPRESA
AND TRADUCCIONES.ESP = "INGRESOS" AND TICKETS.FECHABORRADO IS NULL
AND YEAR(FECHA)=ANYO
GROUP BY MONTH(FECHA)
UNION
-- GASTOS
SELECT MONTH(FECHA) MES,
0 INGRESOS,
SUM(FP.TOTALFACTURA) GASTOS
FROM FACTURASPROVEEDORES FP
INNER JOIN PROVEEDORES P on P.IDPROVEEDOR = FP.IDPROVEEDOR
WHERE P.IDEMPRESA = IDEMPRESA
AND FP.FECHABORRADO IS NULL
AND YEAR(FECHA)=ANYO
GROUP BY MONTH(FECHA)
UNION
SELECT MONTH(FECHA) MES,
0 INGRESOS,
SUM(NETO) GASTOS
FROM TICKETS
INNER JOIN TIPOSTICKETS on (TICKETS.IDTIPOTICKET = TIPOSTICKETS.IDTIPOTICKET)
INNER JOIN TRADUCCIONES on (TIPOSTICKETS.IDTRADUCCION = TRADUCCIONES.IDTRADUCCION AND TIPOSTICKETS.IDTRADUCCIONTABLA = TRADUCCIONES.IDTRADUCCIONTABLA )
WHERE IDEMPRESA = IDEMPRESA
AND TRADUCCIONES.ESP = "INGRESOS" AND TICKETS.FECHABORRADO IS NULL
AND YEAR(FECHA)=ANYO
GROUP BY MONTH(FECHA)
) uu
GROUP BY uu.MES;
END
我的第二个程序:
BEGIN
DECLARE NumeroFacturas bigint;
Select NumeroFacturas = SUM(TOTALFACTURA)
from FACTURASCLIENTES FC
inner join CLIENTES C on C.IDCLIENTE = FC.IDCLIENTE
where FC.FECHABORRADO IS NULL and C.IDEMPRESA = IDEMPRESA;
Select C.NOMBRE, ROUND((SUM(TOTALFACTURA) * 100 / NumeroFacturas),0) FRECUENCIA
From CLIENTES C
inner join FACTURASCLIENTES FC on C.IDCLIENTE = FC.IDCLIENTE
where C.IDEMPRESA = IDEMPRESA and FC.FECHABORRADO IS NULL
GROUP BY C.NOMBRE
ORDER BY FRECUENCIA DESC
LIMIT 6;
END
参考以下链接:http://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.htmlhttp://dev.mysql.com/doc/refman/5.7/en/mysql-use-result.html
上述错误的原因是您没有使用第一次查询的结果而触发第二次查询。