Está en la página 1de 10

CONSULTAS AVANZADAS DE DATOS CON

TRANSACT- SQL

USO DE FUNCIONES
1
OBJETIVOS
 Implementar funciones en SQL Server
 Identificar el uso de funciones escalares
 Aplicar funciones con retorno de tablas

2
CREACIÓN Y USO DE FUNCIONES
 Tipos de funciones
 ¿Qué es una función escalar?
 ¿Qué es una función con valores de

tabla en línea?
 ¿Qué es una función con valores de

tabla?
TIPOS DE FUNCIONES
 Funciones escalares
◦ Similar a las funciones integradas
◦ Devolver un solo valor
 Funciones con valores de tabla en línea
◦ Similar a las vistas con parámetros
◦ Devuelve una tabla como resultado de una
sola instrucción SELECT
 Funciones con valores de tabla de varias
declaraciones
◦ Similar a los procedimientos almacenados
◦ Devuelve una nueva tabla como resultado
de las declaraciones INSERT
FUNCIONES ESCALARES

 La cláusula RETURNS especifica el tipo de datosLa


función se define dentro de un bloque BEGIN…END
CREATE FUNCTION Sales.SumSold(@ProductID int) RETURNS int
AS
BEGIN
DECLARE @ret int
SELECT @ret = SUM(OrderQty)
FROM Sales.SalesOrderDetail WHERE ProductID = @ProductID
IF (@ret IS NULL)
SET @ret = 0
RETURN @ret
END

 Se puede invocar en cualquier lugar donde se permita


una expresión escalar del mismo tipo de datos
SELECT ProductID, Name, Sales.SumSold(ProductID) AS
SumSold
FROM Production.Product
FUNCIONES CON VALORES DE TABLA EN LÍNEA

 RETURNS especifica la tabla como tipo de datos


 El formato se define por el conjunto de
resultados
 El contenido de la función es una instrucción
SELECT
CREATE FUNCTION HumanResources.EmployeesForLevel
(@OrganizationLevel int)
RETURNS TABLE
AS
RETURN (
SELECT FirstName, LastName
FROM HumanResources.Employee Employee INNER JOIN
Person.person Contact
ON Employee.BusinessEntityID = Contact.BusinessEntityID
WHERE OrganizationLevel = @OrganizationLevel)

SELECT * FROM HumanResources.EmployeesForLevel(3)


-- OR
SELECT * FROM HumanResources.EmployeesForLevel(6)
FUNCIONES CON VALORES DE TABLA

 RETURNS especifica el tipo de datos de la tabla y define


la estructura
 BEGIN y END encierran varias sentencias
CREATE FUNCTION HumanResources.EmployeeNames
(@format nvarchar(9))
RETURNS @tbl_Employees TABLE
(EmployeeID int PRIMARY KEY, [Employee Name] nvarchar(100))
AS
BEGIN
IF (@format = 'SHORTNAME')
INSERT @tbl_Employees
SELECT BusinessEntityID, LastName
FROM HumanResources.vEmployee
ELSE IF (@format = 'LONGNAME')
INSERT @tbl_Employees
SELECT BusinessEntityID, (FirstName + ' ' + LastName)
FROM HumanResources.vEmployee
RETURN
END

SELECT * FROM HumanResources.EmployeeNames('LONGNAME')


DIRECTRICES PARA LA CREACIÓN DE
FUNCIONES

ü Determinar el tipo de función

ü Crear una función para una tarea

ü Crear, probar y solucionar problemas


Calificar nombres de objetos dentro de la
ü función
Considere la capacidad de SQL Server para
ü indexar los resultados de la función
ESCRIBIR PROCEDIMIENTOS
ALMACENADOS COMO FUNCIONES
Convertir procedimientos almacenados en funciones
Para un conjunto de resultados, use una función con
valores de tabla
Para un solo valor escalar, use una función escalar

Table-valued functions
Instrucción SELECT única con parámetros
Sin operaciones de actualización
No hay necesidad de declaraciones EXECUTE
dinámicas
Cree resultados intermedios en una tabla temporal
Por su atención, Gracias!!!

10

También podría gustarte