ALTER FUNCTION

Modifie les propriétés d’une fonction existante définie par l’utilisateur ou externe.

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

Voir aussi :

Écriture de fonctions externes, Vue d’ensemble des fonctions définies par l’utilisateur, CREATE FUNCTION , DROP FUNCTION , SHOW USER FUNCTIONS , DESCRIBE FUNCTION, CREATE EXTERNAL FUNCTION , DESCRIBE FUNCTION , DROP FUNCTION , SHOW EXTERNAL FUNCTIONS

Syntaxe

Fonctions définies par l’utilisateur et fonctions externes

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

Fonctions externes

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

Paramètres

Fonctions définies par l’utilisateur et fonctions externes

name

Indique l’identifiant de l’UDF à 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 externe.

Si la fonction accepte des arguments, la commande ALTER doit spécifier les types d’arguments, car les fonctions prennent en charge le surchargement de nom (plus précisément, 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.

SET ...

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

SECURE

Indique si une fonction est sécurisée. Pour plus de détails, voir Protection des informations sensibles avec les UDFs et les procédures stockées sécurisées.

LOG_LEVEL = 'log_level'

Spécifie le niveau de gravité des messages qui doivent être ingérés et mis à disposition dans la table des événements actifs. Les messages du niveau spécifié (et des niveaux plus sévères) sont ingérés.

Pour plus d’informations sur les niveaux de journalisation, voir LOG_LEVEL. Pour plus d’informations sur la définition du niveau de journalisation, voir Réglage du niveau de journalisation.

TRACE_LEVEL = 'trace_level'

Contrôle la manière dont les événements de trace sont intégrés dans la table des événements.

Pour plus d’informations sur les niveaux, voir TRACE_LEVEL. Pour plus d’informations sur la définition du niveau de trace, voir Réglage du niveau de trace.

COMMENT = 'string_literal'

Ajoute un commentaire ou écrase le commentaire existant pour la fonction. La valeur que vous spécifiez est affichée dans la colonne DESCRIPTION de la sortie SHOW FUNCTIONS et SHOW USER FUNCTIONS.

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

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

UNSET ...

Spécifie les propriétés à désactiver pour la fonction, qui les réinitialise aux valeurs par défaut.

Fonctions définies par l’utilisateur

RENAME TO new_name

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

Pour plus de détails, voir Exigences relatives à l’identificateur.

Note

Lorsque vous spécifiez le nouveau nom pour l’UDF, 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.

Fonctions externes

RENAME TO new_name

Spécifie le nouvel identificateur pour la fonction.

L’identificateur n’a pas besoin d’être unique pour le schéma dans lequel la fonction est créée, parce que les fonctions sont identifiées et résolues par leurs noms et types d’arguments. Cependant, la signature (nom et types de données de paramètres) doit être unique dans le schéma.

Le name doit suivre les règles des identificateurs Snowflake. Pour plus de détails, voir Exigences relatives à l’identificateur.

Note

Lorsque vous spécifiez le nouveau nom de la fonction externe, ne spécifiez pas de types de données d’argument ni de parenthèses ; la fonction continuera d’utiliser les mêmes arguments qu’auparavant.

api_integration_name

Il s’agit du nom de l’objet d’intégration API qui doit être utilisé pour authentifier l’appel au service proxy.

Plus de détails sur ce paramètre sont dans CREATE EXTERNAL FUNCTION.

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

Cette clause permet à des utilisateurs de joindre des métadonnées de valeurs clés envoyées avec chaque demande.

La valeur doit être une chaîne constante, pas une expression.

Plus de détails sur ce paramètre sont dans CREATE EXTERNAL FUNCTION.

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

Ceci est similaire à HEADERS, mais au lieu de n’autoriser que des chaînes constantes, 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. Les noms ne doivent pas être placés entre guillemets.

Plus de détails sur ce paramètre sont dans CREATE EXTERNAL FUNCTION.

COMPRESSION = compression_type

Si cette clause est spécifiée, la charge utile JSON est compressée au format spécifié lorsqu’elle est envoyée de Snowflake au service proxy et lorsqu’elle est renvoyée du service proxy à Snowflake.

Pour plus de détails sur les valeurs valides de compression_type, voir CREATE EXTERNAL FUNCTION.

{ REQUEST_TRANSLATOR | RESPONSE_TRANSLATOR } = udf_name

Ajoutez un traducteur de requêtes ou un traducteur de réponses si la fonction externe n’en possède pas déjà un ou remplacez un traducteur de requêtes ou un traducteur de réponses existant en spécifiant le nom d’une UDF JavaScript créée précédemment. Pour plus d’informations, voir Utilisation de traducteurs de requêtes et de réponses avec des données pour un service distant.

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

USAGE

Fonction

Permet d’appeler une UDF ou une fonction externe.

APPLY

Balise

Permet de définir une balise sur l’UDF ou une fonction externe.

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.

Fonctions définies par l’utilisateur

Fonctions externes

  • Il n’y a pas de commande UNSET pour API_INTEGRATION. La modification de API_INTEGRATION est possible, mais pas la désactivation. Pour plus d’informations, voir ALTER API INTEGRATION.

Exemples

Renommez la fonction function1 en function2:

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

Convertissez une fonction régulière function2 en fonction sécurisée :

ALTER FUNCTION function2(number) SET SECURE;
Copy

Fonctions externes

Changez l’intégration API pour une fonction externe :

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

Définissez le nombre maximum de lignes par lot pour une fonction externe :

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