Funciones definidas por el usuario en SQL
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:
1. Funciones escalares
Devuelven un único valor escalar cuyo tipo de dato será definido en la cláusula RETURN
2. Funciones de tabla
Devuelven un conjunto de resultados en forma de tabla
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.