Todos los productos
Search
Centro de documentos

MaxCompute:CREATE SQL FUNCTION

Última actualización: Sep 05, 2026

Las funciones definidas por el usuario (UDF) de SQL permiten encapsular lógica de negocio reutilizable directamente en SQL, sin necesidad de escribir código en Java o Python. A diferencia de las UDF de Java o Python, las UDF de SQL admiten parámetros de tipo función, incluidas las funciones anónimas. La instrucción CREATE SQL FUNCTION crea una UDF de SQL permanente que se almacena en el sistema de metadatos de MaxCompute.

Para crear una UDF de SQL temporal que no se guarde en el sistema de metadatos, utilice la instrucción FUNCTION.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Permisos sobre funciones en su cuenta de Alibaba Cloud (create, query, call y drop). Para más información, consulte permisos de MaxCompute.

  • El modo de script de SQL habilitado en su editor de SQL. Ejecutar CREATE SQL FUNCTION en el modo de edición de SQL común genera un error. Para más información, consulte SQL en modo script.

Sintaxis

create sql function <function_name>(@<parameter_in1> <datatype>[, @<parameter_in2> <datatype>...])
[returns @<parameter_out> <datatype>]
as [begin]
<function_expression>
[end];

Si la UDF consta de una sola expresión, omita begin y end, y escriba la expresión directamente después de as. Cuando la lógica requiere varias instrucciones, envuélvalas entre begin...end.

Parámetros

Parameter

Required

Description

function_name

Sí

Nombre de la UDF de SQL. Debe ser único dentro del proyecto y no puede coincidir con el nombre de una función integrada. Cada nombre de función solo se registra una vez. Para consultar los nombres existentes, ejecute LIST FUNCTIONS.

parameter_in

Sí

Parámetros de entrada. Admiten el tipo función, incluidas las funciones anónimas. Consulte function-type input parameters para ver ejemplos generales y anonymous function input parameters para ejemplos de funciones anónimas.

datatype

Sí

Tipo de dato de cada parámetro de entrada. Debe tratarse de un tipo de dato compatible con MaxCompute. Consulte edición de tipos de dato de MaxCompute V2.0. Al invocar la UDF, los tipos de dato de entrada deben coincidir exactamente con los definidos aquí.

returns

No

Variable del valor de retorno. Si se omite, se devuelve de forma predeterminada el valor de function_name.

parameter_out

Sí (si se especifica returns)

Nombre del parámetro de salida correspondiente al valor de retorno.

function_expression

Sí

Lógica de implementación de la UDF. Puede consistir en un operador integrado, una función integrada u otra UDF.

Ejemplos

UDF sencilla

Cuando la lógica se basa en una sola expresión, escríbala directamente después de as:

-- Increment a BIGINT value by 1
create sql function my_add(@a BIGINT) as @a + 1;

La expresión ubicada tras as constituye el cuerpo de la función. Esta puede hacer referencia a operadores integrados, funciones integradas u otras UDF.

UDF con varias instrucciones

Si la lógica requiere variables intermedias, utilice begin...end para agrupar varias instrucciones:

-- Sum three BIGINT values using an intermediate variable
create sql function my_sum(@a BIGINT, @b BIGINT, @c BIGINT) returns @my_sum BIGINT
as begin
    @temp := @a + @b;
    @my_sum := @temp + @c;
end;

La cláusula returns @my_sum BIGINT asigna un nombre explícito a la variable de retorno. Si omite returns, la función devuelve de forma predeterminada el valor de function_name.

Parámetros de entrada de tipo función

Las UDF de SQL aceptan parámetros de tipo función, lo que le permite pasar funciones integradas u otras UDF como argumentos. Para ver ejemplos detallados, consulte:

Pasos siguientes

Una vez creada la UDF de SQL, utilice las siguientes instrucciones relacionadas para gestionarla e invocarla:

Statement

Description

SELECT FUNCTION

Invoca una UDF de SQL.

DESC FUNCTION

Consulta los detalles de la UDF: nombre, propietario, fecha de creación, nombre de clase y lista de recursos.

LIST FUNCTIONS

Enumera todas las UDF de un proyecto de MaxCompute.

DROP FUNCTION

Elimina una UDF existente de un proyecto de MaxCompute.

FUNCTION

Crea una UDF de SQL temporal (no se guarda en el sistema de metadatos).