Boa noite, Fiz passando uma data como parâmetro da seguinte maneira:
CREATE DEFINER=root
@localhost
PROCEDURE Cursor_loop_faturamento
(vData DATE)
BEGIN
DECLARE fim_do_cursor INT DEFAULT 0;
DECLARE vQuantidade INT;
DECLARE vPreco FLOAT;
DECLARE vFaturamentoTotal FLOAT DEFAULT 0;
DECLARE c CURSOR FOR
SELECT INF.QUANTIDADE, INF.PRECO FROM ITENS_NOTAS_FISCAIS INF
INNER JOIN NOTAS_FISCAIS NF ON NF.NUMERO = INF.NUMERO
WHERE MONTH(NF.DATA_VENDA) = MONTH(vData) AND YEAR(NF.DATA_VENDA) = YEAR(vDATA);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fim_do_cursor = 1;
OPEN c;
WHILE fim_do_cursor = 0
DO
FETCH c INTO vQuantidade, vPreco;
IF fim_do_cursor = 0 THEN
SET vFaturamentoTotal = vFaturamentoTotal + (vQuantidade*vPreco);
END IF;
END WHILE;
CLOSE c;
SELECT vFaturamentoTotal;
END
Porém, ao comparar com
SELECT ROUND(SUM(INF.QUANTIDADE*INF.PRECO)) FROM ITENS_NOTAS_FISCAIS INF INNER JOIN NOTAS_FISCAIS NF ON NF.NUMERO = INF.NUMERO WHERE MONTH(NF.DATA_VENDA) = 1 AND YEAR(NF.DATA_VENDA) = 2016
caso a data no parâmetro fosse por exemplo 2016-01-01, estou obtendo divergências nos resultados :(
Testei com outros datas também...
O meu código faz sentido?
Aguardo atenciosamente! ;)