Boa tarde, o resultado do meu exercício deu muito diferente do resultado sugerido. Acreditava que era para fazer a soma do total de notas fiscais emitidas entre uma data inicial e a data final.
Para isso eu criei o seguinte script:
CREATE DEFINER=`root`@`localhost` PROCEDURE `Soma_Dias_Notas`(vDataInicial DATE, vDataFinal DATE)
BEGIN
DECLARE SomaTotal INT;
SET SomaTotal =0;
WHILE vDataInicial <= vDataFinal
DO
SET SomaTotal = SomaTotal + (SELECT COUNT(*) FROM NOTAS_FISCAIS WHERE DATA_VENDA=vDataInicial GROUP BY DATA_VENDA);
SET vDataInicial = ADDDATE(vDatainicial, INTERVAL 1 DAY);
END WHILE;
SELECT SomaTotal AS Total_Notas_Emitidas, vDataFinal as DataFinalBase;
END
Nessa minha saída, escolho no call uma data inicial e uma data final. Como resultado ele me trás a Soma de notas emitidas entre as duas datas.
No resultado sugerido do exercício ele me trás algo completamente diferente: para cada data no intervalo, ele abre diversos selects contendo o total de notas emitidas naquele dia. Nesse caso, ele me abriu 10 selects. Se fosse um período muito maior eu acredito que se tornaria inviável o exemplo pela quantidade de selects que seriam abertas.
Minha dúvida é: continuo interpretando errado o exercício? Qual foi o objetivo da saída sugerida?
Caso eu não tenha interpretado errado, não é melhor reformular o exercício para ser algo parecido com o que eu fiz? Acho que faria mais sentido com a aula dada.
Atenciosamente
Brunno