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> ... ]
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 }
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áriodb_name.schema_name.object_name
ouschema_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¶
Se utilizar uma UDF em uma política de mascaramento, certifique-se de que o tipo de dados da coluna, a UDF e a política de mascaramento sejam correspondentes. Para obter mais informações, consulte Funções definidas pelo usuário em uma política de mascaramento.
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;
Converter uma função regular function2
em uma função segura:
ALTER FUNCTION function2(number) SET SECURE;
Funções externas¶
Alterar o API de integração para uma função externa:
ALTER FUNCTION function4(number) SET API_INTEGRATION = api_integration_2;
Definir o número máximo de linhas por lote para uma função externa:
ALTER FUNCTION function5(number) SET MAX_BATCH_ROWS = 100;