Funciones con valor de tabla en SQL Server

Las funciones con valor de tabla en SQL server se utilizan para obtener resultados como una tabla de datos por otras consultas.

En SQL Server se manejan dos tipos de funciones para el usuario.

  • Funciones escalares (UDF).
  • Funciones con valor de tabla (TVF).

Las funciones con valor de tabla reciben los valores del usuario para realizar las operaciones y devolver un resultado en forma de tabla (colunas y filas).

Ubicación de funciones con valor de tabla

Dentro de una base de datos tenemos las diferentes carpetas de administración, entre ellas tenemos la de programación.

Dentro de esta carpeta tenemos una subcarpeta de nombre Funciones de valor tabla.

Carpeta de funciones de valor tabla SQL

Crear la función de tabla en SQL

Creamos un archivo para función tabla dando clic derecho sobre la carpeta, seleccionamos Nueva función en línea tabla valor.

Funciones con valor de tabla en SQL Server

Al seleccionar la opción se crea un archivo de consulta con la estructura de la función.

Estructura de funciones de valor de tabla

Los puntos marcados en rojo que debemos tomar en cuenta para personalizar la función.

  1. Agregar el nombre de la función.
  2. Declarar los parámetros que el usuario debe enviar a la función.
  3. Operaciones que devuelvan un resultado.

Siguiendo la estructura podemos crear una función que nos genere un resultado de las consultas desde un procedimiento almacenado.

Podría interesarte Cursores en SQL Server  

Ejemplo

Ya que conocemos la estructura de este tipo de funciones, vamos a crear una función que nos resuelva el siguiente problema.

Obtener todos los productos a partir de la clave de una categoría.

Analizando el problema, necesitamos realizar una consulta a la tabla de productos y filtrar por la clave de la categoría.

Por lo tanto, la función podría quedar de la siguiente manera.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Gerardo Alvarez
-- Create date: 01-07-2019
-- Description:	Obtener los productos de una categoria
-- =============================================
CREATE FUNCTION PRODUCTOS_POR_CATEGORIA
(	
	@Valor int
)
RETURNS TABLE 
AS
RETURN 
(
	SELECT * FROM Products WHERE CategoryID = @Valor
)
GO

Para guardar la función en la base de datos debemos de ejecutar la consulta.

Ejecutar funcion de valor tabla

Para confirmar que se ha guardado vamos a la ubicación de este tipo de funciones.

Funciones de valor tabla en SQL Server

Utilizar función

Ya que tengo creada la función ahora veamos como utilizarlo desde otra consulta select, para obtener la tabla de datos.

Abrimos una nueva consulta de la misma base de datos y coloquemos una consulta select tradicional.

SELECT * FROM Tabla;

Para utilizar la función debemos de cambiar “Tabla” por el nombre de la función y enviarle un valor entera que representa la categoría.

SELECT * FROM dbo.PRODUCTOS_POR_CATEGORIA(1);

Ejecuta la consulta, podrás obtener el resultado siguiente.

Consulta de una funcion de valor tabla

Podría interesarte Variable de tipo tabla en SQL Server  

La manera de hacer uso de este tipo de función es diferente a las funciones escalares, sin embargo, son llamados de la misma forma.

One Comment

  1. Se puede crear una variable dentro de una funcion tipo tabla como para controlar los resultados de una consulta

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *