ALTER FUNCTION

Modifica as propriedades de uma função definida pelo usuário ou função externa existente.

Para fazer qualquer outra alteração em uma UDF, você deve descartar a função (usando DROP FUNCTION) e depois recriá-la.

Consulte também:

Como escrever funções externas, Visão geral das funções definidas pelo usuário, CREATE FUNCTION , DROP FUNCTION , SHOW USER FUNCTIONS , DESCRIBE FUNCTION, CREATE EXTERNAL FUNCTION , DESCRIBE FUNCTION , DROP FUNCTION , SHOW EXTERNAL FUNCTIONS

Sintaxe

Funções definidas pelo usuário e externas

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) RENAME TO <new_name>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET LOG_LEVEL = '<log_level>'

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TRACE_LEVEL = '<trace_level>'

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET COMMENT = '<string_literal>'

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET SECURE

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET { SECURE | LOG_LEVEL | TRACE_LEVEL | COMMENT }

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]
Copy

Funções externas

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET API_INTEGRATION = <api_integration_name>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET HEADERS = ( [ '<header_1>' = '<value>' [ , '<header_2>' = '<value>' ... ] ] )

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET CONTEXT_HEADERS = ( [ <context_function_1> [ , <context_function_2> ...] ] )

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET MAX_BATCH_ROWS = <integer>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET COMPRESSION = <compression_type>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET { REQUEST_TRANSLATOR | RESPONSE_TRANSLATOR } = <udf_name>

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET
              { COMMENT | HEADERS | CONTEXT_HEADERS | MAX_BATCH_ROWS | COMPRESSION | SECURE | REQUEST_TRANSLATOR | RESPONSE_TRANSLATOR }
Copy

Parâmetros

Funções definidas pelo usuário e externas

name

Especifica o identificador da UDF a ser alterada. O identificador pode conter o nome do esquema e o nome do banco de dados, assim como o nome da função. Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

arg_data_type [ , ... ]

Especifica os argumentos/tipos de dados de entrada para a função externa.

Se a função aceita argumentos, então o comando ALTER deve especificar os tipos de argumentos porque as funções oferecem suporte à sobrecarga de nomes (ou seja, duas funções no mesmo esquema podem ter o mesmo nome), e os tipos de argumentos são usados para identificar a função.

SET ...

Especifica as propriedades a serem definidas para a função:

SECURE

Especifica se uma função é segura. Para obter mais detalhes, consulte Proteção de informações sensíveis com UDFs e procedimentos armazenados seguros.

LOG_LEVEL = 'log_level'

Especifica o nível de gravidade das mensagens que devem ser ingeridas e disponibilizadas na tabela de eventos ativos. As mensagens no nível especificado (e em níveis mais graves) são ingeridas.

Para obter mais informações sobre os níveis, consulte LOG_LEVEL. Para obter informações sobre como configurar o nível de registro, consulte Configuração do nível de registro.

TRACE_LEVEL = 'trace_level'

Controla como os eventos de rastreamento são ingeridos na tabela de eventos.

Para obter informações sobre níveis, consulte TRACE_LEVEL. Para obter informações sobre como configurar o nível de rastreamento, consulte Configuração do nível de rastreamento.

COMMENT = 'string_literal'

Adiciona um comentário ou substitui o comentário existente para a função. O valor especificado é exibido na coluna DESCRIPTION na saída SHOW FUNCTIONS e SHOW USER FUNCTIONS.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Especifica o nome da tag e o valor da cadeia de caracteres dela.

O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.

Para obter informações sobre como especificar tags em uma instrução, consulte Cotas de tags para objetos e colunas.

UNSET ...

Especifica as propriedades a serem removidas para a função, o que as restaura para os padrões.

Funções definidas pelo usuário

RENAME TO new_name

Especifica o novo identificador para o UDF; a combinação do identificador com os tipos de dados de argumentos existentes deve ser única para o esquema.

Para obter mais detalhes, consulte Requisitos para identificadores.

Nota

Ao especificar o novo nome para o UDF, não especifique tipos de dados de argumentos ou parênteses; especifique apenas o novo nome.

Você pode mover o objeto para um banco de dados e/ou esquema diferente enquanto opcionalmente renomeia o objeto. Para isso, especifique um valor qualificado new_name que inclua o novo banco de dados e/ou nome do esquema no formulário db_name.schema_name.object_name ou schema_name.object_name, respectivamente.

Nota

  • O banco de dados e/ou esquema de destino já deve existir. Além disso, um objeto com o mesmo nome não pode já existir no banco de dados de destino; caso contrário, a instrução retorna um erro.

  • É proibido mover um objeto para um esquema de acesso gerenciado a menos que o proprietário do objeto (ou seja, a função que tem o privilégio OWNERSHIP sobre o objeto) também possua o esquema de destino.

Quando um objeto é renomeado, outros objetos que fazem referência a ele devem ser atualizados com o novo nome.

Funções externas

RENAME TO new_name

Especifica o novo identificador da função.

O identificador não precisa ser único para o esquema no qual a função é criada, pois as funções são identificadas e resolvidas por seu nome e tipos de argumentos. No entanto, a assinatura (nome e tipos de dados de parâmetro) deve ser única dentro do esquema.

O name deve seguir as regras para os identificadores Snowflake. Para obter mais detalhes, consulte Requisitos para identificadores.

Nota

Ao especificar o novo nome da função externa, não especifique tipos de dados de argumentos ou parênteses; a função continuará usando os mesmos argumentos que antes.

api_integration_name

Este é o nome do objeto de integração de API que deve ser usado para autenticar a chamada para o serviço de proxy.

Mais detalhes sobre este parâmetro podem ser encontrados em CREATE EXTERNAL FUNCTION.

HEADERS = ( 'header_1' = 'value' [ , 'header_2' = 'value' ... ] )

Esta cláusula permite aos usuários anexar os metadados de valor chave que são enviados com cada solicitação.

O valor deve ser uma cadeia de caracteres constante, não uma expressão.

Mais detalhes sobre este parâmetro podem ser encontrados em CREATE EXTERNAL FUNCTION.

CONTEXT_HEADERS = ( [ context_function_1 [ , context_function_2 ... ] ] )

Isto é semelhante a HEADERS, mas em vez de permitir apenas cadeias de caracteres constantes, permite vincular os resultados da função de contexto do Snowflake aos cabeçalhos HTTP.

Cada valor deve ser o nome de uma função de contexto. Os nomes não devem delimitados por aspas.

Mais detalhes sobre este parâmetro podem ser encontrados em CREATE EXTERNAL FUNCTION.

COMPRESSION = compression_type

Se esta cláusula for especificada, a carga de JSON é comprimida usando o formato especificado quando enviada do Snowflake para o serviço de proxy, e quando enviada de volta do serviço de proxy para o Snowflake.

Para obter mais detalhes sobre os valores válidos de compression_type, consulte CREATE EXTERNAL FUNCTION.

{ REQUEST_TRANSLATOR | RESPONSE_TRANSLATOR } = udf_name

Adicionar um tradutor de solicitação ou um tradutor de resposta se a função externa ainda não tiver um ou substituir um tradutor de solicitação ou tradutor de resposta existente, especificando o nome de um tradutor de solicitação ou tradutor de resposta previamente criado no UDF JavaScript. Para obter mais informações, consulte Uso de tradutores de solicitação e resposta com dados para um serviço remoto.

Requisitos de controle de acesso

Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:

Privilégio

Objeto

Notas

USAGE

Função

Permite chamar uma função UDF ou função externa.

APPLY

Tag

Permite definir uma tag na UDF ou na função externa.

Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Funções definidas pelo usuário

Funções externas

  • Não há comando UNSET para API_INTEGRATION. Você pode mudar o API_INTEGRATION, mas não pode removê-lo. Para obter mais informações, consulte ALTER API INTEGRATION.

Exemplos

Renomear a função function1 como function2:

ALTER FUNCTION IF EXISTS function1(number) RENAME TO function2;
Copy

Converter uma função regular function2 em uma função segura:

ALTER FUNCTION function2(number) SET SECURE;
Copy

Funções externas

Alterar o API de integração para uma função externa:

ALTER FUNCTION function4(number) SET API_INTEGRATION = api_integration_2;
Copy

Definir o número máximo de linhas por lote para uma função externa:

ALTER FUNCTION function5(number) SET MAX_BATCH_ROWS = 100;
Copy