ALTER FUNCTION (Snowpark Container Services)

Modifie les propriétés d’une fonction de service existante.

Pour apporter d’autres modifications à une , vous devez supprimer la fonction (en utilisant DROP FUNCTION (Snowpark Container Services)) puis la recréer.

Voir aussi :

Fonctions de service, CREATE FUNCTION, DESC FUNCTION, DROP FUNCTION

Syntaxe

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

Paramètres

name

Indique l’identificateur de la fonction service à modifier. L’identifiant peut contenir le nom du schéma et le nom de la base de données, ainsi que le nom de la fonction. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

arg_data_type [ , ... ]

Spécifie les arguments/types de données d’entrée pour la fonction de service.

Si la fonction accepte des arguments, la commande ALTER doit spécifier les types d’arguments, car les fonctions prennent en charge la surcharge de nom (c’est-à-dire, deux fonctions dans le même schéma peuvent avoir le même nom), et les types d’arguments sont utilisés pour identifier la fonction.

RENAME TO new_name

Spécifie le nouvel identificateur pour la fonction de service ; la combinaison de l’identificateur et des types de données d’argument existants doit être unique pour le schéma.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

Note

Lorsque vous spécifiez le nouveau nom pour la fonction de service, ne spécifiez pas des types de données d’argument ni des parenthèses ; spécifiez uniquement le nouveau nom.

Vous pouvez déplacer l’objet vers une autre base de données et/ou un autre schéma tout en renommant éventuellement l’objet. Pour ce faire, spécifiez une valeur new_name qualifiée qui inclut le nouveau nom de la base de données et/ou du schéma sous la forme db_name.schema_name.object_name ou schema_name.object_name, respectivement.

Note

  • La base de données et/ou le schéma de destination doivent déjà exister. En outre, un objet portant le même nom ne peut pas déjà exister dans le nouvel emplacement ; sinon, l’instruction renvoie une erreur.

  • Le déplacement d’un objet vers un schéma d’accès géré est interdit sauf si le propriétaire de l’objet (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur l’objet) est également propriétaire du schéma cible.

Lorsqu’un objet est renommé, les autres objets qui le référencent doivent être mis à jour avec le nouveau nom.

SET ...

Spécifie les propriétés à définir pour la fonction :

COMMENT = 'string_literal'

Spécifie un commentaire pour la fonction, qui est affiché dans la colonne DESCRIPTION de la sortie SHOW FUNCTIONS et de la sortie SHOW USER FUNCTIONS.

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

Spécifie le nom du service et le nom du point de terminaison tels que définis dans la spécification du service.

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

Cela permet de lier les résultats de la fonction de contexte Snowflake aux en-têtes HTTP.

Chaque valeur doit être le nom d’une fonction de contexte. N’ajoutez pas de guillemets autour des noms.

Plus de détails sur ce paramètre sont dans CREATE FUNCTION (Snowpark Container Services).

MAX_BATCH_ROWS = integer

Spécifie la taille du lot lors de l’envoi de données à un service pour augmenter la concurrence

UNSET ...

Spécifie les propriétés à désactiver pour la fonction, qui les réinitialise aux valeurs par défaut. Notez que vous ne pouvez pas désactiver le point de terminaison de service.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

OWNERSHIP

Fonction

USAGE

Point de terminaison de service

L’utilisation sur un point de terminaison de service est accordée aux rôles de service définis dans la spécification de service. Vous accordez ensuite le rôle de service au rôle modifiant la fonction de service. Ce privilège est requis en cas de modification d’un point de terminaison de service.

Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

Créer une fonction de service :

ALTER FUNCTION my_echo_udf(VARCHAR) RENAME TO my_echo_udf_temp;
Copy

Définir un commentaire pour une fonction de service :

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

Définir le nombre maximum de lignes par lot pour une fonction de service :

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

Définir l’en-tête de contexte CURRENT_USER pour une fonction de service :

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

Désactiver MAX_BATCH_ROWS pour une fonction de service :

ALTER FUNCTION my_echo_udf(VARCHAR) UNSET MAX_BATCH_ROWS;
Copy