stringtranslate.com

Función definida por el usuario

Una función definida por el usuario ( UDF ) es una función proporcionada por el usuario de un programa o entorno, en un contexto en el que se supone habitualmente que las funciones están integradas en el programa o entorno. Las UDF suelen escribirse para satisfacer las necesidades de su creador.

Lenguaje BASICO

En algunas implementaciones antiguas del lenguaje de programación BASIC , las funciones definidas por el usuario se definen utilizando la sintaxis "DEF FN". Los dialectos más modernos de BASIC están influenciados por el paradigma de programación estructurada , donde la mayor parte o la totalidad del código se escribe como funciones o procedimientos definidos por el usuario, y el concepto se vuelve prácticamente redundante.

Lenguaje COBOL

En el lenguaje de programación COBOL , una función definida por el usuario es una entidad que el usuario define especificando un párrafo FUNCTION-ID. Una función definida por el usuario debe devolver un valor especificando la frase RETURNING del encabezado de división de procedimiento y se invoca utilizando la sintaxis function-identifier. Consulte la norma ISO/IEC 1989:2014 Programming Language COBOL para obtener más información.

A partir de mayo de 2022, el compilador IBM Enterprise COBOL para z/OS 6.4 ( IBM COBOL ) contiene soporte para funciones definidas por el usuario.

Bases de datos

En los sistemas de gestión de bases de datos relacionales , una función definida por el usuario proporciona un mecanismo para ampliar la funcionalidad del servidor de base de datos añadiendo una función que se puede evaluar en sentencias de lenguaje de consulta estándar (normalmente SQL ). El estándar SQL distingue entre funciones escalares y funciones de tabla. Una función escalar devuelve un único valor (o NULL ), mientras que una función de tabla devuelve una tabla (relacional) que comprende cero o más filas, cada fila con una o más columnas.

Las funciones definidas por el usuario en SQL se declaran mediante la CREATE FUNCTIONinstrucción . Por ejemplo, una función definida por el usuario que convierte grados Celsius a Fahrenheit (una escala de temperatura utilizada en EE. UU.) podría declararse de la siguiente manera:

CREAR FUNCIÓN dbo . CtoF ( Celsius FLOAT ) DEVUELVE FLOAT RETURN ( Celsius * 1 . 8 ) + 32           

Una vez creada, una función definida por el usuario se puede utilizar en expresiones en instrucciones SQL. Por ejemplo, se puede invocar donde se permiten la mayoría de las demás funciones intrínsecas. Esto también incluye instrucciones SELECT , donde la función se puede utilizar contra datos almacenados en tablas en la base de datos. Conceptualmente, la función se evalúa una vez por fila en dicho uso. Por ejemplo, supongamos una tabla denominada Elements, con una fila para cada elemento químico conocido. La tabla tiene una columna denominada BoilingPoint para el punto de ebullición de ese elemento, en grados Celsius. La consulta

SELECCIONAR Nombre , CtoF ( Punto de ebullición ) DE Elementos    

recuperaría el nombre y el punto de ebullición de cada fila. Invoca la CtoFfunción definida por el usuario, como se declaró anteriormente, para convertir el valor de la columna a un valor en grados Fahrenheit.

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

Las funciones definidas por el usuario no deben confundirse con los procedimientos almacenados . Los procedimientos almacenados permiten al usuario agrupar un conjunto de comandos SQL. Un procedimiento puede aceptar parámetros y ejecutar sus instrucciones SQL en función de dichos parámetros. Un procedimiento no es una expresión y, por lo tanto, no se puede utilizar como funciones definidas por el usuario.

Algunos sistemas de gestión de bases de datos permiten la creación de funciones definidas por el usuario en lenguajes distintos de SQL. Microsoft SQL Server , por ejemplo, permite al usuario utilizar lenguajes .NET, incluido C#, para este fin. DB2 y Oracle admiten funciones definidas por el usuario escritas en lenguajes de programación C o Java.

Servidor SQL 2000

Hay tres tipos de UDF en Microsoft SQL Server 2000: funciones escalares , funciones en línea con valores de tabla y funciones con valores de tabla de múltiples instrucciones.

Las funciones escalares devuelven un único valor de datos (no una tabla) con la cláusula RETURNS. Las funciones escalares pueden utilizar todos los tipos de datos escalares, con excepción de los tipos de datos definidos por el usuario y de la marca de tiempo. Las funciones en línea con valores de tabla devuelven el conjunto de resultados de una única instrucción SELECT. Las funciones con valores de tabla de múltiples instrucciones devuelven una tabla, que se creó con muchas instrucciones TRANSACT-SQL.

Las funciones definidas por el usuario se pueden invocar desde una consulta, como funciones integradas como OBJECT_ID, LEN, DATEDIFF, o se pueden ejecutar a través de una declaración EXECUTE, como los procedimientos almacenados.

Notas de rendimiento: 1. En Microsoft SQL Server 2000, una función con valores de tabla que "envuelve" una vista puede ser mucho más rápida que la vista en sí. La siguiente función MyFunction es un ejemplo de una "envoltura de función" que se ejecuta más rápido que la vista subyacente MyView:

CREAR FUNCIÓN MyFunction ( ) DEVUELVE @Tbl TABLA ( StudentID VARCHAR ( 255 ) , SAS_StudentInstancesID INT , Etiqueta VARCHAR ( 255 ) , Valor MONEY , CMN_PersonsID INT ) COMO COMIENZA INSERT @Tbl ( StudentID , SAS_StudentInstancesID , Etiqueta , Valor , CMN_PersonsID ) SELECCIONA StudentID , SAS_StudentInstancesID , Etiqueta , Valor , CMN_PersonsID DE MyView -- donde MyView selecciona ( con uniones ) las mismas columnas de tablas grandes                                                 REGRESO FINAL

2. En Microsoft SQL Server 2005, el resultado de la ejecución del mismo código es el opuesto: la vista se ejecuta más rápido que el "function-wrapper".

Las funciones definidas por el usuario son subrutinas formadas por una o más instrucciones Transact-SQL que se pueden utilizar para encapsular código para su reutilización. Aceptan cero o más argumentos y evalúan un valor de retorno. Tienen instrucciones de flujo de control y DML en su cuerpo, de manera similar a los procedimientos almacenados. No permiten cambios en ningún estado de sesión global, como modificaciones a la base de datos o recursos externos, como un archivo o una red. No admiten parámetros de salida. Se debe especificar la palabra clave DEFAULT para pasar el valor predeterminado del parámetro. Los errores en UDF hacen que UDF se anule, lo que, a su vez, anula la instrucción que invocó la UDF.

CREAR FUNCIÓN CubicVolume - Dimensiones de entrada en centímetros ( @CubeLength decimal ( 4 , 1 ), @CubeWidth decimal ( 4 , 1 ), @CubeHeight decimal ( 4 , 1 ) ) DEVUELVE decimal ( 12 , 3 ) COMO COMIENZA DEVUELVE ( @CubeLength * @CubeWidth * @CubeHeight ) FIN                    

Tipo de datos admitido en Microsoft SQL Server 2000 Como una tabla temporal utilizada para almacenar resultados Se utiliza principalmente para definir una variable temporal de tipo (tabla) y el valor de retorno de una UDF El alcance está limitado a la función, el procedimiento almacenado o el lote en el que se define No se permite la operación de asignación entre variables (tabla) Se puede utilizar en SELECT, INSERT, UPDATE y DELETE CREATE FUNCTION para crear UDF ALTER FUNCTION para cambiar las características de UDF DROP FUNCTION para eliminar UDF

Colmena Apache

Apache Hive define, además de las funciones definidas por el usuario (UDF) habituales, también funciones agregadas definidas por el usuario (UDAF) y funciones generadoras de tablas (UDTF). [1] Hive permite a los desarrolladores crear sus propias funciones personalizadas con Java. [2]

Doris apache

Apache Doris, una base de datos analítica en tiempo real de código abierto, permite a los usuarios externos contribuir con sus propias UDF escritas en C++. [3]

Referencias

  1. ^ "Manual de lenguaje UDF - Apache Hive - Apache Software Foundation". 26 de junio de 2015.
  2. ^ "HivePlugins - Apache Hive - Apache Software Foundation". 26 de junio de 2015.
  3. ^ "Apache Doris UDF" . Consultado el 8 de abril de 2023 .

Enlaces externos