【发布时间】:2014-07-23 09:37:16
【问题描述】:
当我尝试从我的 php 代码中调用 2 个存储过程时遇到此错误....
我该如何进行这 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'));
我的通话功能:
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
【问题讨论】:
标签: php mysql sql stored-procedures