/*Se a diferenca de datas for igual a dois, eh porque so foi transcorrido um dia, portanto somente se valida de que nao vai marcar dias de mais*/
IF @DaysBetween = 2
BEGIN
SELECT @BusinessDays = 1
END
ELSE
BEGIN
WHILE @Cnt < @DaysBetween
BEGIN
/*Iguala-se a data que vamos calcular para saber se eh sabado ou domingo na variavel @EvalDate somando os dias que marque o contador, o qual nao deve ser maior que o numero total de dias que existem na classe de datas*/
SELECT @EvalDate = @StartDate + @Cnt
/*Utilizando a funcao datepart com o parametro dw que calcula que dia da semana corresponde uma data determinada, determinados que nao seja sabado (7) ou domingo (1)*/
IF ((datepart(dw,@EvalDate) <> 1) and
(datepart(dw,@EvalDate) <> 7) )
BEGIN
/*Se nao eh sabado ou domingo, entao se soma um ao total de dias que queremos desdobrar*/
SELECT @BusinessDays = @BusinessDays + 1
END
//Soma-se um dia a mais ao contador
SELECT @Cnt = @Cnt + 1
END
END
END
ELSE
BEGIN
//Se fosse certo que as datas eram iguales se desdobraria em zero
SELECT @BusinessDays = 0
END
//Ao finalizar o ciclo, a funcao regressa o numero total de dias