ALTER FUNCTION (Snowpark Container Services)

Modifica as propriedades de uma função de serviço existente.

Para fazer qualquer outra alteração em uma função de serviço, você deve remover a função (usando DROP FUNCTION (Snowpark Container Services)) e recriá-la.

Consulte também:

Funções de serviço, CREATE FUNCTION, DESC FUNCTION, DROP FUNCTION

Sintaxe

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

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 COMMENT = '<string_literal>'

ALTER FUNCTION [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] )
  SET SERVICE = '<service_name>' ENDPOINT = '<endpoint_name>'

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

Parâmetros

name

Especifica o identificador para a função de serviço 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. Identificadores entre aspas duplas também diferenciam maiúsculas de minúsculas.

arg_data_type [ , ... ]

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

Se a função aceitar argumentos, o comando ALTER deverá especificar os tipos de argumento porque as funções suportam sobrecarga de nome (ou seja, duas funções no mesmo esquema podem ter o mesmo nome) e os tipos de argumento são usados para identificar a função.

RENAME TO new_name

Especifica o novo identificador para a função de serviço; a combinação do identificador e dos tipos de dados do argumento existente deve ser exclusiva para o esquema.

Para obter mais informações, consulte Requisitos para identificadores.

Nota

Ao especificar o novo nome para a função de serviço, não especifique tipos de dados de argumento 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.

SET ...

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

COMMENT = 'string_literal'

Especifica um comentário para a função, que é exibido na coluna DESCRIPTION na saída SHOW FUNCTIONS e SHOW USER FUNCTIONS na saída.

SERVICE = '<service_name>' ENDPOINT = '<endpoint_name>'

Especifica o nome do serviço e o nome do ponto de extremidade, conforme definido na especificação do serviço.

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

Ele permite vincular os resultados da função de contexto Snowflake aos cabeçalhos HTTP.

Cada valor deve ser o nome de uma função de contexto. Não coloque os nomes entre aspas.

Mais detalhes sobre este parâmetro podem ser encontrados em CREATE FUNCTION (Snowpark Container Services).

MAX_BATCH_ROWS = integer

Especifica o tamanho do lote ao enviar dados para um serviço para aumentar a simultaneidade

UNSET ...

Especifica as propriedades a serem removidas para a função, o que as restaura para os padrões. Observe que você não pode desconfigurar o ponto de extremidade do servidor.

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

OWNERSHIP

Função

USAGE

Ponto de extremidade do servidor

O uso em um ponto de extremidade do servidor é concedido às funções de serviço definidas na especificação do serviço. Em seguida, você concede a função de serviço à função que altera a função de serviço. Este privilégio é necessário ao alterar um ponto de extremidade do servidor.

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.

Exemplos

Renomeie uma função de serviço:

ALTER FUNCTION my_echo_udf(VARCHAR) RENAME TO my_echo_udf_temp;
Copy

Defina um comentário para uma função de serviço:

ALTER FUNCTION my_echo_udf(VARCHAR) SET COMMENT = 'some comment';
Copy

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

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

Defina o cabeçalho de contexto CURRENT_USER para uma função de serviço:

ALTER FUNCTION my_echo_udf(VARCHAR) SET CONTEXT_HEADER = (CURRENT_USER);
Copy

Desative MAX_BATCH_ROWS para uma função de serviço:

ALTER FUNCTION my_echo_udf(VARCHAR) UNSET MAX_BATCH_ROWS;
Copy