1
resposta

Usando ANO e MES como parâmetros + CASE

delimiter yy

create procedure fatmesano (mes int, ano int)

begin

-- 1 --
declare fimloop int default 0;
declare quanti int;
declare preco float;
declare fat float;
declare c cursor for select a.quantidade, a.preco from itens_notas_fiscais a inner join notas_fiscais b on a.numero = b.numero
WHERE MONTH(b.DATA_VENDA) = mes AND YEAR(b.DATA_VENDA) = ano;

-- 2 --
declare continue handler for not found set fimloop = 1;

-- 3 --
set fat = 0;
set fimloop = 0;
open c;

-- 4 --
while fimloop = 0
do FETCH c into quanti, preco;
if fimloop = 0 then set fat = fat + (quanti*preco);

-- 5 --
end if;
end while;
close c;

-- 6 --
select fat as Faturamento, ano as 'Ano consultado', case 
when mes = 1 then 'Janeiro'
when mes = 2 then 'Fevereiro'
when mes = 3 then 'Março'
when mes = 4 then 'Abril'
when mes = 5 then 'Maio'
when mes = 6 then 'Junho'
when mes = 7 then 'Julho'
when mes = 8 then 'Agosto'
when mes = 9 then 'Setembro'
when mes = 10 then 'Outubro'
when mes = 11 then 'Novembro'
when mes = 12 then 'Dezembro'

end as 'Mês consultado';

end yy

delimiter ;
1 resposta

Oi, Roger!! Como vai?

Testei sua stored procedure e ela funcionou perfeitamente, mandou bem! Parabéns pela organização do script SQL e pelo cuidado em construí-lo.

Por meio desta atividade, você pôde colocar em prática os seus conhecimentos sobre cursores, continue sempre estudando e se dedicando desta forma que você vai longe!

Em caso de dúvidas, fico à disposição para ajudar.

Um forte abraço!