Olá pessoal,
Tenho uma procedure mas gostaria de transformá-la em TableFunction, o problema é que preciso declarar variáveis e não estou conseguindo, veja a procedure, basicamente ela me retorna o dia da semana e qual é a repetição do dia da semana no mês (tipo se é a 3ª segunda-feira do mês)
Code Block
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
ALTER
PROCEDURE Proc_Dia_Semana
@Data_Dia
datetime
AS
Declare
@DiaSemana as char(1),@UltimoDiaMes as char(2)
if
datepart(mm,@Data_Dia)=02
Begin
if datepart(yyyy,@Data_Dia) % 4 <> 0
Set @UltimodiaMes=28
end
else
Begin
if datepart(mm,@Data_Dia)=01
Set @UltimoDiaMes=31
if datepart(mm,@Data_Dia)=03
Set @UltimoDiaMes=31
if datepart(mm,@Data_Dia)=04
Set @UltimoDiaMes=30
if datepart(mm,@Data_Dia)=05
Set @UltimoDiaMes=31
if datepart(mm,@Data_Dia)=06
Set @UltimoDiaMes=30
if datepart(mm,@Data_Dia)=07
Set @UltimoDiaMes=31
if datepart(mm,@Data_Dia)=08
Set @UltimoDiaMes=31
if datepart(mm,@Data_Dia)=09
Set @UltimoDiaMes=30
if datepart(mm,@Data_Dia)=10
Set @UltimoDiaMes=31
if datepart(mm,@Data_Dia)=11
Set @UltimoDiaMes=30
if datepart(mm,@Data_Dia)=12
Set @UltimoDiaMes=31
End
if
(cast(@Data_Dia as datetime) - 7) < Cast(DatePart(yyyy,@Data_dia)+'-'+DatePart(mm,@Data_Dia)+'-01' as datetime)
set @DiaSemana='1'
else
if (cast(@Data_Dia as datetime) - 14) < Cast(DatePart(yyyy,@Data_dia)+'-'+DatePart(mm,@Data_Dia)+'-01' as datetime)
set @DiaSemana='2'
else
if (cast(@Data_Dia as datetime) - 21) < Cast(DatePart(yyyy,@Data_dia)+'-'+DatePart(mm,@Data_Dia)+'-01' as datetime)
set @DiaSemana='3'
else
if (cast(@Data_Dia as datetime) + 7) < Cast(DatePart(yyyy,@Data_dia)+'-'+DatePart(mm,@Data_Dia)+'-'+@UltimoDiaMes as datetime)
set @DiaSemana='4'
else
set @DiaSemana='5'
select
Dia=
Case datepart(dw,@Data_Dia)
When 1 then 'Domingo'
When 2 then 'Segunda-Feira'
When 3 then 'Terça-Feira'
When 4 then 'Quarta-Feira'
when 5 then 'Quinta-Feira'
When 6 then 'Sexta-Feira'
When 7 then 'Sabado'
End,
@DiaSemana
as SemanaMes
GO