Todos os produtos
Search
Central de documentação

MaxCompute:CREATE SQL FUNCTION

Última atualização: Jun 26, 2026

As funções definidas pelo usuário (UDFs) SQL permitem encapsular lógica de negócios reutilizável diretamente em SQL, sem escrever código Java ou Python. Diferentemente das UDFs Java/Python, as UDFs SQL aceitam parâmetros do tipo função, incluindo funções anônimas. A instrução CREATE SQL FUNCTION cria uma UDF SQL permanente armazenada no sistema de metadados do MaxCompute.

Para criar uma UDF SQL temporária não persistida no sistema de metadados, use a instrução FUNCTION.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Permissões no nível de função na sua conta Alibaba Cloud (criar, consultar, chamar e excluir). Para obter detalhes, consulte Permissões do MaxCompute

  • Modo de script SQL ativado no editor SQL. Executar CREATE SQL FUNCTION no modo comum de edição SQL gera erro. Para obter mais informações, consulte SQL em modo de script

Sintaxe

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

Para UDFs de expressão única, omita begin e end e escreva a expressão diretamente após as. Em lógicas com múltiplas instruções, envolva-as em begin...end.

Parâmetros

Parâmetro

Obrigatório

Descrição

function_name

Sim

Nome da UDF SQL. Deve ser exclusivo no projeto e não pode coincidir com nomes de funções integradas. Cada nome exclusivo só pode ser registrado uma vez. Para verificar nomes existentes, execute LIST FUNCTIONS.

parameter_in

Sim

Parâmetros de entrada. Podem ser do tipo função, incluindo funções anônimas. Para exemplos, consulte parâmetros de entrada do tipo função. Para exemplos de funções anônimas, consulte parâmetros de entrada de função anônima.

datatype

Sim

Tipo de dados de cada parâmetro de entrada. Deve ser um tipo compatível com o MaxCompute. Consulte Edição de tipos de dados do MaxCompute V2.0. Ao chamar a UDF, os tipos de dados de entrada devem corresponder exatamente aos definidos aqui.

returns

Não

Variável de valor de retorno. Se omitida, o valor de function_name é retornado por padrão.

parameter_out

Sim (se returns for especificado)

Nome do parâmetro de saída para o valor de retorno.

function_expression

Sim

Lógica de implementação da UDF. Pode ser um operador integrado, uma função integrada ou outra UDF.

Exemplos

UDF simples

Para lógicas de expressão única, escreva a expressão diretamente após as:

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

A expressão após as constitui o corpo da função e pode referenciar operadores integrados, funções integradas ou outras UDFs.

UDF com múltiplas instruções

Se a lógica exigir variáveis intermediárias, use begin...end para envolver várias instruções:

-- 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;

A cláusula returns @my_sum BIGINT nomeia explicitamente a variável de retorno. Se você omitir returns, a função retornará o valor de function_name por padrão.

Parâmetros de entrada do tipo função

UDFs SQL aceitam parâmetros do tipo função, permitindo passar funções integradas ou outras UDFs como argumentos. Para exemplos detalhados, consulte:

Próximos passos

Após criar uma UDF SQL, use as instruções relacionadas abaixo para gerenciá-la e chamá-la:

Instrução

Descrição

SELECT FUNCTION

Chama uma UDF SQL.

DESC FUNCTION

Visualize detalhes da UDF: nome, proprietário, hora de criação, nome da classe e lista de recursos.

LIST FUNCTIONS

Lista todas as UDFs em um projeto MaxCompute.

DROP FUNCTION

Remove uma UDF existente de um projeto MaxCompute.

FUNCTION

Crie uma UDF SQL temporária (não persistida no sistema de metadados).