1
resposta

Duvida na diferença de resultados

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! ;)

1 resposta

Olá Flávia, tudo bem? Esse mesmo questionamento foi feito pelo Marcelo nesse outro tópico e eu já respondi lá, acho que é a mesma coisa, para ele o problema foi resolvido, então você poderia verificar esse tópico lá?! E fala se você entendeu tudo certinho e se ajudou!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software