Función definida por el usuario
# Función definida por el usuario

Una función definida por el usuario es una función proporcionada por el usuario de un programa o entorno, en un contexto donde la suposición habitual es que las funciones están incluidas en el programa o entorno.

## Lenguaje BASIC

En algunas implementaciones antiguas del lenguaje de programación BASIC, las funciones definidas por el usuario están definidas utilizando el "DEF FN" sintaxis. Dialectos más modernos de BASIC están influidos por el paradigma de programación estructurado, donde la mayoría o todo del código está escrito como funciones definidas por el usuario o procedimientos, y el concepto se vuelve prácticamente redundante.

## Bases de datos

En bases de datos de SQL, una función definida por el usuario proporciona un mecanismo para extender la funcionalidad del servidor de base de datos añadiendo una función que puede ser evaluado en declaraciones de SQL. El estándar de SQL distingue entre escalar y funciones de tabla. Una función escalar devuelve únicamente sólo un valor simple (o NULL), mientras que una función de tabla regresa una tabal(relacional) somete comprender cero o más filas, cada fila con uno o más columnas.

Usuario-definió las funciones en SQL están declaradas utilizando la declaración CREATE FUNCTION. Por ejemplo, una función que convierte Celsius a Fahrenheit podría ser declarado así:

Una vez creada, una función definida por el usuario puede ser utilizada en expresiones en declaraciones de SQL. Por ejemplo, pueda ser invocado dónde la mayoría otras funciones intrínsecas están dejadas. Esto también incluye declaraciones SELECT, donde la función puede ser utilizada contra los datos almacenaron en mesas en la base de datos. Conceptualmente, la función está evaluada una vez por fila en tal uso. Por ejemplo, suponer una mesa nombró ELEMENTOS, con una fila para cada elemento químico sabido. La mesa tiene una columna nombró BoilingPoint para el punto de hervir de aquel elemento, en Celsius. La consulta

Recuperaría el nombre y el punto de hervir de cada fila. Invoca el CtoF función definida por el usuario cuando declaró encima para convertir el valor en la columna a un valor en Fahrenheit.

Cada función definida por el usuario lleva ciertas características o propiedades. El estándar de SQL define las propiedades siguientes:

* Lenguaje - define el lenguaje de programación en qué el función definida por el usuario está implementada; los ejemplos incluyen SQL, C, C# y Java.
* Estilo de parámetro - define las convenciones que suele pase los parámetros de función y resultados entre la implementación de la función y el sistema de base de datos (único aplicable si la lengua no es SQL).
* Nombre concreto - un nombre para la función que es único dentro de la base de datos. Nota que el nombre de función no tiene que ser único, considerando sobrecargó funciones. Algunas implementaciones de SQL requieren aquellos nombres de función son únicos dentro de una base de datos, y sobrecargó las funciones no son dejadas.
* Determinismo - especifica si la función es determinista o no. La característica de determinismo tiene una influencia en la consulta optimizer cuándo compilando una declaración de SQL.
* SQL-acceso de datos - dice el sistema de administración de la base de datos si la función contiene #ninguno declaraciones de SQL (NINGÚN SQL), contiene declaraciones de SQL pero no accede cualesquier mesas o vistas (CONTIENE SQL), lee dato de mesas o vistas (LEE DATO de SQL), o de hecho modifica dato en la base de datos (MODIFICA DATO de SQL).

Las funciones definidas por el usuario no tendrían que ser confundidas con procedimientos almacenados. Los procedimientos almacenados permiten al usuario agrupar un conjunto de órdenes de SQL. Un procedimiento puede aceptar parámetros y ejecutar sus declaraciones de SQL que dependen de aquellos parámetros. Un procedimiento no es una expresión y, así, no puede ser utilizado como función definida por el usuario.

Algunos sistemas de administración de la base de datos permiten la creación de funciones definidas por el usuario en lenguajes distintos a SQL. SQL Server de Microsoft, por ejemplo, deja el usuario para utilizar .Las lenguajes .NET que incluyen C# para este propósito. DB2 y Oracle soportan funciones definidas por el usuario de escritas en lenguajes de programación C o Java .

### Apache Hive

Apache Hive define, además de las funciones de usuario regulares, también define funciones de agregación definidas por el usuario (en inglés user-defined aggregate functions, UDAF) y funciones que generan tablas (table-generation funcions,UDTF). Hive habilita da los esarrolladores para crear sus propias funciones con Java.

