Entrada

Funciones en MSSQL Server

Cuando trabajamos con SQL Server, nos encontramos con diferentes formas de encapsular lógica y reutilizarla. Entre ellas, están los procedimientos almacenados y las funciones.

¿Qué es una función en SQL Server?

Una función en SQL Server son objetos de base de datos que incluyen un grupo de sentencias SQL para realizar una actividad específica. Una función recibe datos de entrada (parámetros), realiza una operación y devuelve un resultado (siempre debe retornar un valor).

Esto es como las funciones como en las matemáticas: le das un valor de entrada, hace un cálculo y te devuelve un resultado.

Un ejemplo sencillo de una función incorporada en sql server es UPPER:

1
SELECT UPPER('hola mundo');

Como puedes observar, aquí usamos una función integrada UPPER, que convierte un texto a mayúsculas. En SQL Server también podemos crear nuestras propias funciones.

Tipos de funciones

En SQL Server existen dos tipos de funciones definidas por el usuario:

  • Funciones escalares: devuelven un solo valor. Ejemplo: calcular la edad de una persona o el IVA de un producto.
  • Funciones con tabla: Devuelven una tabla completa, como si fuera el resultado de una consulta.

Sintaxis de una función escalar

En términos generales, una función en SQL Server sigue una estructura bastante fija: primero se le asigna un nombre, luego se definen los parámetros de entrada (si los necesita), se indica el tipo de dato o tabla que va a devolver, y finalmente se escribe la lógica que genera ese resultado. A continuación, se muestra de forma genérica la sintaxis para definir una función.

Sintaxis:

1
2
3
4
5
6
7
8
CREATE FUNCTION nombreFunc(@Param tipo)
RETURNS tipo
AS
BEGIN
   DECLARE @Resultado tipo
   SET @Resultado = @Param * 2
   RETURN @Resultado
END

Sintaxis de una función con tabla

Antes de entrar en la sintaxis de creación, es importante entender que una función de tabla en SQL Server puede resultar similar a una vista:

  • Al igual que una vista, devuelve un conjunto de filas que puede usarse en consultas SELECT como si fuera una tabla real.
  • Permite encapsular consultas complejas para que sean reutilizables, mejorando la organización del código.

Diferencia clave: mientras que una vista siempre devuelve el mismo resultado según su definición, una función de tabla puede recibir parámetros, lo que permite modificar dinámicamente los datos que devuelve.

En otras palabras: una función de tabla es como una vista “dinámica”, donde puedes ajustar su comportamiento según los valores que le pases como argumentos.

Sintaxis:

1
2
3
4
5
6
7
8
CREATE FUNCTION nombreFunc (@Param tipo)
RETURNS TABLE
AS
RETURN (
    SELECT columna1, columna2
    FROM tabla
    WHERE columna1 = @Param
);
Esta entrada está licenciada bajo CC BY 4.0 por el autor.