Funciones escalares:

 

--ejemplo 1

CREATE FUNCTION [dbo].[funEsDiaFestivo_Emp](@IdEmpleado T_Id_Empleado, @Fecha DATETIME)
RETURNS bit
AS
BEGIN
DECLARE @val bit
IF EXISTS (SELECT * FROM Calendario_Fechas CF INNER JOIN Empleados_Datos ED ON CF.IdCalendario = ED.IdCalendario WHERE ED.IdEmpleado = @IdEmpleado AND CF.Fecha = @Fecha)
SET @val=1
ELSE
SET @val=0
RETURN @val
END
go
-- llamada
SELECT dbo.[funEsDiaFestivo_Emp] (0,'20130105')
go

 

--ejemplo 2

CREATE FUNCTION [dbo].[funUltDiaMes](@Fecha T_Fecha_Corta)
RETURNS smallint
AS
>BEGIN
Declare @PrimDiaMesSig T_Fecha_corta
Declare @UltDiaMes T_Fecha_corta
SET @PrimDiaMesSig=LEFT(convert(varchar,DATEADD(mm,1,@fecha),112),6)+'01'
SELECT @UltDiaMes=DATEADD(dd,-1,@PrimDiaMesSig)
RETURN DATEPART(dd,@UltDiaMes)
END
go
-- llamada
SELECT dbo.[ funUltDiaMes] (‘20130105')