Está en la página 1de 4

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

También podría gustarte