Un procedimiento almacenado y una función definida por el usuario (UDF) es un conjunto de sentencias SQL y de procedimiento (declaraciones, asignaciones, bucles, flujo de control, etc.) que se almacenan en el servidor de la base de datos y pueden ser invocados utilizando la interfaz SQL.
Ejemplo rápido:
En PostgreSQL, tanto los procedimientos almacenados como las funciones definidas por el usuario se crean con la sentencia CREATE FUNCTION. Existen diferencias entre la noción de procedimientos almacenados y funciones en los sistemas de bases de datos:
Procedimiento almacenado | Función | |
Uso en una expresión | ||
Devolver un valor | ||
Devolver valores como OUT parámetros | ||
Devolver un único conjunto de resultados | (como una función de tabla) | |
Devuelve múltiples conjuntos de resultados |
Así que en la mayoría de los casos, el propósito de un procedimiento almacenado es:
-
Realizar acciones sin devolver ningún resultado (operaciones INSERT, UPDATE i.e.)
-
Devolver uno o más valores escalares como parámetros de SALIDA
-
Devolver uno o más conjuntos de resultados
Usualmente el propósito de una función definida por el usuario es procesar los parámetros de entrada y devolver un nuevo valor.
Herramientas de elaboración de informes
Muchas herramientas de elaboración de informes (Crystal Reports, Reporting Services, herramientas de BI, etc.) permiten especificar una consulta (sentencia SQL SELECT) o un procedimiento almacenado que devuelve un conjunto de resultados para definir un conjunto de datos para un informe.
Los procedimientos almacenados son muy útiles cuando se necesita realizar cálculos complejos antes de que los datos estén disponibles para un informe.