Una función puede definirse como un conjunto de instrucciones que realiza una tarea determinada de manera automática, pudiendo ser invocadas dentro de las instrucciones SQL. A grandes rasgos, podemos clasificar dos grandes grupos o categorías de funciones:

  • Funciones integradas: Son aquellas funciones propias del sistema, ya definidas por SQL Server. Desde el siguiente enlace ver: Funciones integradas

  • Funciones definidas por el usuario: Son aquellas funciones creadas por el usuario para definir una funcionalidad propia y personalizada.

En esta sección, nos centraremos en explicar las características y tipos de funciones definidas por el usuario, así como su creación, alteración, eliminación y ejecución dentro del entorno SQL Server.

Hemos mencionado que las funciones definidas por el usuario realizan operaciones personalizadas de acuerdo a los parámetros de entrada definidos por el mismo, lo que abarca una amplia funcionalidad limitada únicamente a ciertas restricciones que veremos más adelante.

Atendiendo al resultado devuelto, podemos diferenciar dos tipos de funciones definidas por el usuario:

Los siguientes tipos de datos: text, ntext, image, cursor y timestamp no pueden ser devueltos por funciones escalares.

Características

  • Permiten crear y utilizar bloques de código independientes guardados en la base de datos que pueden ser invocados de manera ilimitada. A este aspecto se le denomina: programación modular

  • A diferencia de las funciones integradas, las funciones definidas por el usuario son maleables y modificables.

  • Reducen el tiempo de compilación convirtiéndose en una herramienta importante para mejorar la eficiencia en la ejecución de código Transact SQL.

  • Permiten anidarse. Se puede invocar a una función definida por el usuario desde otra distinta.

Limitaciones

  • No pueden realizar operaciones que alteren o modifiquen la base de datos como INSERT INTO, UPDATES…

  • No pueden devolver varios conjuntos de resultados.

  • No admiten una gestión de errores ordinaria. Esto incluye las estructuras de control de flujos: TRY...CATCH

  • No pueden llamar a procedimientos almacenados.

  • No pueden utilizar tablas temporales.