delimiter $$
create procedure reporte_descanso(in quincena int, in mes int, in año int, in dia_descanso varchar(200))
begin
declare var_inicio, var_final int default 0;
declare fecha_Inicial, fecha_Final, fecha_incremento, dia_entrada date;
set lc_time_names = 'es_PE';
IF quincena = 1 then
set dia_entrada = concat(año,'-',mes,'-','01');
set fecha_Final = concat(año,'-',mes,'-','15');
ELSEIF quincena = 2 then
set dia_entrada = concat(año,'-',mes,'-','16');
set fecha_Final = last_day(dia_entrada);
END IF;
set fecha_Inicial = dia_entrada;
set var_inicio = extract(day from fecha_inicial);
set var_final = extract(day from fecha_final);
set fecha_incremento = fecha_inicial;
create temporary table examen.tmp_dias_mes(id int,dia_mes date,nombre_dia varchar(200));
while var_inicio <= var_final do
insert into examen.tmp_dias_mes (id, dia_mes, nombre_dia)
values
(var_inicio, fecha_incremento, dayname(fecha_incremento));
set var_inicio = var_inicio + 1;
set fecha_incremento = date_add(fecha_incremento, interval 1 day);
end while;
select DATE_FORMAT(dia_mes, "%d-%m-%Y") as 'DÏA', nombre_dia as 'NOMBRE', IF(nombre_dia = dia_descanso, "DESCANSO", "") as 'DESCANSO' from examen.tmp_dias_mes;
drop table examen.tmp_dias_mes;
end;
$$
delimiter ;