FUNCIONES CON VALOR TABLA
TALLER DE BASE DE DATOS
GARCIA ROJAS EDSON
CESAR ZAPIAIN CRUZ
Funciones con valores de tablas
¿Qué es una función?
Una función es una rutina almacenada que recibe unos parámetros escalares de entrada, los procesa
según la definición de la función y finalmente retorna un resultado de un tipo
específico que permitirá su utilización con un objetivo.
Las funciones definidas por el usuario en SQL Server permiten retornar tablas en los resultados.
Esta característica proporciona al programador facilidad a la hora de
administrar sus bases de datos.
Tipos de funciones
Existen tres tipos de funciones:
• Funciones escalares
• Funciones con valores de tabla en línea
• Funciones con valores de tabla y múltiples instrucciones
La sintaxis de creación de las tres es muy similar, sólo se diferencian en el tipo de parámetros
que retornan.
¿Qué es una función con valor de tabla?
Este tipo de función tiene la misma sintaxis que una función escalar, la única diferencia es que
devuelve tipo de dato TABLE (una tabla compuesta de registros).
Sintaxis Básica
• Para crear una función con valor de tabla
CREATE FUNCTION ufn_<nombreFuncion>
[(@paraml <tipo>, ...)]
RETURNS <@nomTabla> TABLE <<nombre_campo > tipo, <nombre_campo_2>
tipo.....> AS
BEGIN
INSERT <@nomTabla> SELECT -- sentencias para ingresar los datos
RETURN END;
• Para alterar una función con valor de tabla
ALTER FUNCTION ufn_<nombreFuncion>
[(@paraml <tipo>, ...)]
RETURNS <@nomTabla> TABLE <<nombre_campo > tipo, <nombre_campo_2> tipo.....>
AS BEGIN
INSERT <@nomTabla> SELECT -- sentencias alteradas para ingresar los datos
RETURN END;
• Para ejecutar una función con valor de tabla
SELECT * FROM dbo.ufn_<nombreFuncion> 500)
GO
• Para eliminar una función con valor de tabla
DROP FUNCTION ufn_<nombreFuncion>;
Ejemplo con AdventureWorkslT
A) Creamos una función que nos devuelva una tabla
CREATE FUNCTION [dbo].[ufn_GetProducts]
(@price float)
RETURNS @ufn_GetProducts TABLE (ProductID int PRIMARY KEY NOT NULL,ProductName
varcha r(255) NOT NULL,ProductPrice float NOT NULL) AS
BEGIN
INSERT @ufn_GetProducts SELECT ProductId,Name,ListPrice FROM SalesLt.Product WHERE
Li stPrice>=@price
RETURN END;
B) Ejecutamos la función con valores de tabla
SELECT * FROM dbo.ufn_GetProducts(500) GO
C) Alteramos la función con valores de tabla y comprobamos
ALTER FUNCTION [dbo].[ufn_GetProducts] (@price
float)
RETURNS @ufn_GetProducts TABLE (ProductID int PRIMARY KEY NOT NULL,ProductName
varcha r(255) NOT NULL,ProductPrice float NOT NULL) AS
BEGIN
INSERT @ufn_GetProducts SELECT ProductId,Name,ListPrice FROM SalesLt.Product WHERE
Li stPrice>=@price AND color = 'Black'
RETURN END;
SELECT * FROM dbo.ufn_GetProducts(500) GO
D) Eliminamos la función con valores de tabla y comprobamos
DROP FUNCTION ufn_GetProducts; GO
SELECT * FROM dbo.ufn_GetProducts(500) G