Catégories :

DDL pour les fonctions définies par l’utilisateur, les fonctions externes et les procédures stockées

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 :

Fonctions externes, Fonctions définies par l’utilisateur (UDFs), 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 COMMENT = '<string_literal>'

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

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

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 }

Paramètres

Fonctions définies par l’utilisateur et fonctions externes

nom

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.

type_données_arg [ , ... ]

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 ...

SECURE

Indique si une fonction est sécurisée. Pour plus de détails, voir UDFs sécurisés.

COMMENT = 'littéral_chaine'

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.

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 nouveau_nom

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.

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 nouveau_nom

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 nom 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.

nom_intégration_api

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 (...)

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 <type_compression>, 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.

Notes sur l’utilisation

  • Le déplacement d’une fonction vers un schéma d’accès géré (utilisant la syntaxe ALTER FUNCTION ... RENAME TO) est interdit sauf si le propriétaire de la fonction (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur la fonction) est également propriétaire du schéma cible.

  • 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;

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

ALTER FUNCTION function2(number) SET SECURE;

Fonctions externes

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

ALTER FUNCTION function4(number) SET api_integration = api_integration_2;

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

ALTER FUNCTION function5(number) SET max_batch_rows = 100;