Guia 04 - Funciones en SQL Server
Guia 04 - Funciones en SQL Server
Uso de funciones
Curso: Consultas avanzadas de datos con Transact-SQL
Tiempo de ejecución: 2 horas
I. AMBIENTE DE LABORATORIO
Host: 162.248.53.71
Base de datos: AdventureWorks2014
Usuario: capacitacion
Password: Nuevo1010$
II. DESARROLLO
UPDATE Sales.SpecialOffer
SET StartDate = DateAdd(day, -1, GetDate()),
EndDate = DateAdd(day, 27, GetDate())
WHERE SpecialOfferId IN (1,3,5,7,9,11,13,15)
UPDATE Sales.SpecialOffer
SET StartDate = DateAdd(day, 28, GetDate()),
EndDate = DateAdd(month, 2, GetDate())
WHERE SpecialOfferId IN (2,4,6,8,10,12,14,16)
GO
Ejercicio 1:
Creando funciones escalares en SQL Server
1
-- Create scalar function
CREATE FUNCTION Production.GetAverageRatingForProduct_GX (@ProductID int)
RETURNS int
AS
BEGIN
DECLARE @Average int
IF (@Average IS NULL)
SET @Average = 0
RETURN @Average
END
GO
SELECT ProductID,
Name,
Production.GetAverageRatingForProduct_GX(ProductID) AS
Average
FROM Production.Product
ORDER BY ProductID
GO
2
Ejercicio 2:
Creando funciones inline table-valued en SQL Server
3
Ejercicio 3:
Creando funciones multi-statement table-valued en SQL Server
4
Ejercicio 4:
Creando funciones personalizadas
IF (@Max IS NULL)
SET @Max = 0
RETURN @Max
END
GO
❑ Ejecute el siguiente script para utilizar la función creada anteriormente:
-- Test Sales.GetMaximumDiscountForCategory
SELECT Sales.GetMaximumDiscountForCategory_GX ('Reseller');
GO
5
Ejercicio 5:
Creando funciones personalizadas
-- Create Sales.GetDiscountsForDate
CREATE FUNCTION Sales.GetDiscountsForDate_GX (@DateToCheck datetime)
RETURNS TABLE
AS
RETURN (
SELECT Description,
DiscountPct,
Type,
Category,
StartDate,
EndDate,
MinQty,
MaxQty
FROM Sales.SpecialOffer
WHERE @DateToCheck BETWEEN StartDate AND EndDate
)
GO
-- Test Sales.GetDiscountsForDate
SELECT *
FROM Sales.GetDiscountsForDate_GX (GetDate())
ORDER BY DiscountPct DESC;
GO
6
Ejercicio 6:
Creando funciones personalizadas
7
❑ Ejecute el siguiente script para utilizar la función creada anteriormente:
-- Test Sales.GetDiscountedProducts
SELECT * FROM Sales.GetDiscountedProducts_GX(0);
SELECT * FROM Sales.GetDiscountedProducts_GX(1);
GO
Ejercicio 7:
Implementando funciones
Cree las siguientes funciones, seleccione un tipo para cada una e incorpore la
llamada a la función con la información que usted crea conveniente:
❑ Función para retornar el numero de empleados por departamento
❑ Función para retornar los datos de las ordenes de compras por fecha
❑ Función para obtener los datos principales de los empleados por
departamento