ALTER FUNCTION¶
Ändert die Eigenschaften einer vorhandenen benutzerdefinierten oder externen Funktion.
Um weitere Änderungen an einer UDF vorzunehmen, müssen Sie die Funktion (mit DROP FUNCTION) löschen und dann neu erstellen.
- Siehe auch:
Schreiben von externen Funktionen, Übersicht zu benutzerdefinierten Funktionen, CREATE FUNCTION, DROP FUNCTION, SHOW USER FUNCTIONS, DESCRIBE FUNCTION, CREATE EXTERNAL FUNCTION, DESCRIBE FUNCTION, DROP FUNCTION, SHOW EXTERNAL FUNCTIONS
Syntax¶
Benutzerdefinierte und externe Funktionen¶
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> ... ]
Externe Funktionen¶
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 }
Parameter¶
Benutzerdefinierte und externe Funktionen¶
name
Gibt den Bezeichner für die zu ändernde UDF an. Der Bezeichner kann den Schemanamen und den Datenbanknamen sowie den Funktionsnamen enthalten. Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.
arg_data_type [ , ... ]
Gibt die Datentypen der Argumente/Eingaben für die externe Funktion an.
Wenn die Funktion Argumente akzeptiert, muss der Befehl ALTER die Argumenttypen angeben, da Funktionen das Überladen von Namen unterstützen (d. h. zwei Funktionen im selben Schema können denselben Namen haben) und die Argumenttypen zur Identifizierung der Funktion verwendet werden.
SET ...
Gibt die Eigenschaften an, die für die Funktion festgelegt werden sollen:
SECURE
Gibt an, ob eine Funktion sicher ist. Weitere Details dazu finden Sie unter Schutz sensibler Informationen mit sicheren UDFs und gespeicherten Prozeduren.
LOG_LEVEL = 'log_level'
Gibt den Schweregrad von Meldungen an, die in die aktive Ereignistabelle erfasst und zur Verfügung gestellt werden sollen. Meldungen des angegebenen Schweregrads (und mit höherem Schweregrad) werden erfasst.
Weitere Informationen zu Protokolliergraden finden Sie unter LOG_LEVEL. Weitere Informationen zum Festlegen des Protokolliergrads finden Sie unter Einstellen des Protokolliergrads.
TRACE_LEVEL = 'trace_level'
Steuert, wie Ablaufverfolgungsereignisse in der Ereignistabelle erfasst werden.
Weitere Informationen zu Protokolliergraden finden Sie unter TRACE_LEVEL. Weitere Informationen zum Festlegen der Ablaufverfolgungsebene finden Sie unter Einstellen des Protokolliergrads (Ablaufverfolgungsebene).
COMMENT = 'string_literal'
Fügt einen Kommentar hinzu oder überschreibt den vorhandenen Kommentar für die Funktion. Der von Ihnen angegebene Wert wird in der Spalte
DESCRIPTION
der Ausgabe SHOW FUNCTIONS und SHOW USER FUNCTIONS angezeigt.
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.
Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.
Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.
UNSET ...
Gibt die Eigenschaften an, die für die Funktion nicht gesetzt werden sollen, wodurch sie auf die Standardwerte zurückgesetzt werden.
Benutzerdefinierte Funktionen¶
RENAME TO new_name
Gibt den neuen Bezeichner für die UDF an. Die Kombination aus dem Bezeichner und den vorhandenen Argumentdatentypen muss für das Schema eindeutig sein.
Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.
Bemerkung
Wenn Sie den neuen Namen für die UDF angeben, verwenden Sie keine Argumentdatentypen oder Klammern, sondern geben Sie nur den neuen Namen an.
Sie können das Objekt in eine andere Datenbank und/oder in ein anderes Schema verschieben und dabei optional das Objekt umbenennen. Geben Sie dazu einen qualifizierten
new_name
-Wert an, der den neuen Datenbank- und/oder Schemanamen im Formatdb_name.schema_name.object_name
bzw.schema_name.object_name
enthält.Bemerkung
Die Zieldatenbank und/oder das Zielschema müssen bereits vorhanden sein. Außerdem darf in der Zieldatenbank nicht bereits ein gleichnamiges Schema vorhanden sein, da die Anweisung sonst einen Fehler zurückgibt.
Das Verschieben eines Objekts in ein verwaltetes Zugriffsschema ist nicht zulässig, es sei denn, der Objekteigentümer (d. h. die Rolle mit der Berechtigung OWNERSHIP für das Objekt) ist auch Eigentümer des Zielschemas.
Wenn ein Objekt umbenannt wird, müssen andere Objekte, die darauf verweisen, mit dem neuen Namen aktualisiert werden.
Externe Funktionen¶
RENAME TO new_name
Gibt den neuen Bezeichner der Funktion an.
Der Bezeichner muss für das Schema, in dem die Funktion erstellt wird, nicht eindeutig sein, da Funktionen durch ihren Namen und ihre Argumenttypen identifiziert und aufgelöst werden. Die Signatur (Name und Datentypen der Parameter) muss jedoch innerhalb des Schemas eindeutig sein.
name
muss den Snowflake-Regeln für Bezeichner folgen. Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.Bemerkung
Wenn Sie den neuen Namen für die externe Funktion angeben, dürfen Sie keine Argumentdatentypen oder Klammern verwenden. Die Funktion wird weiterhin dieselben Argumente wie zuvor verwenden.
api_integration_name
Dies ist der Name des API-Integrationsobjekts, das zur Authentifizierung des Aufrufs an den Proxydienst verwendet werden soll.
Weitere Details zu diesem Parameter finden Sie unter CREATE EXTERNAL FUNCTION.
HEADERS = ( 'header_1' = 'value' [ , 'header_2' = 'value' ... ] )
Mit dieser Klausel können Benutzer Schlüsselwert-Metadaten anhängen, die bei jeder Anforderung gesendet werden.
Der Wert muss eine konstante Zeichenfolge sein, kein Ausdruck.
Weitere Details zu diesem Parameter finden Sie unter CREATE EXTERNAL FUNCTION.
CONTEXT_HEADERS = ( [ context_function_1 [ , context_function_2 ... ] ] )
Dies ähnelt HEADERS, lässt jedoch nicht nur konstante Zeichenfolgen zu, sondern bindet auch die Ergebnisse der Snowflake-Kontextfunktion an HTTP-Header.
Jeder Wert muss der Name einer Kontextfunktion sein. Die Namen sollten nicht in Anführungszeichen gesetzt werden.
Weitere Details zu diesem Parameter finden Sie unter CREATE EXTERNAL FUNCTION.
COMPRESSION = compression_type
Bei Angabe dieser Klausel wird die JSON-Nutzlast in ein spezifisches Format komprimiert, wenn sie von Snowflake an den Proxydienst gesendet und vom Proxydienst an Snowflake zurückgesendet wird.
Weitere Informationen zu gültigen Werten von
compression_type
(<Komprimierungstyp>) finden Sie unter CREATE EXTERNAL FUNCTION.{ REQUEST_TRANSLATOR | RESPONSE_TRANSLATOR } = udf_name
Fügen Sie einen Anforderungsübersetzer oder einen Antwortübersetzer hinzu, wenn die externe Funktion noch keinen hat, oder ersetzen Sie einen vorhandenen Anforderungsübersetzer oder Antwortübersetzer, indem Sie den Namen einer zuvor erstellten JavaScript-UDF angeben. Weitere Informationen dazu finden Sie unter Verwendung von Anforderungs- und Antwortübersetzern mit Daten für einen Remotedienst.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
USAGE |
Funktion |
Ermöglicht den Aufruf einer UDF oder externen Funktion. |
APPLY |
Tag |
Ermöglicht das Setzen eines Tags auf eine UDF oder eine externe Funktion. |
Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
Benutzerdefinierte Funktionen¶
Wenn Sie eine UDF- in einer Maskierungsrichtlinie verwenden, stellen Sie sicher, dass die Datentypen von Spalte, UDF und Maskierungsrichtlinie übereinstimmen. Weitere Informationen dazu finden Sie unter Benutzerdefinierte Funktionen in einer Maskierungsrichtlinie.
Externe Funktionen¶
Es gibt keinen UNSET-Befehl für API_INTEGRATION. Sie können API_INTEGRATION ändern, aber nicht deaktivieren. Weitere Informationen dazu finden Sie unter ALTER API INTEGRATION.
Beispiele¶
Umbenennen der Funktion function1
in function2
:
ALTER FUNCTION IF EXISTS function1(number) RENAME TO function2;
Konvertieren eine reguläre Funktion function2
in eine sichere Funktion:
ALTER FUNCTION function2(number) SET SECURE;
Externe Funktionen¶
Ändern der API-Integration für eine externe Funktion:
ALTER FUNCTION function4(number) SET API_INTEGRATION = api_integration_2;
Festlegen der maximalen Anzahl von Zeilen pro Batch für eine externe Funktion:
ALTER FUNCTION function5(number) SET MAX_BATCH_ROWS = 100;