ALTER PROCEDURE

Ändert die Eigenschaften für eine bestehende gespeicherte Prozedur. Wenn Sie Änderungen vornehmen müssen, die hier nicht unterstützt werden, verwenden Sie stattdessen DROP PROCEDURE, und erstellen Sie dann die gespeicherte Prozedur neu.

Siehe auch:

CREATE PROCEDURE, DROP PROCEDURE, SHOW PROCEDURES, DESCRIBE PROCEDURE

Syntax

Die Syntax für ALTER PROCEDURE variiert je nachdem, welche Programmiersprache Sie für den UDF-Handler verwenden.

Java-Handler

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

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = '<integration_name>' [ , '<integration_name>' ... ] ]
  [ SECRETS = '<secret_variable_name>' = <secret_name> [ , '<secret_variable_name>' = <secret_name> ... ] ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

JavaScript-Handler

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

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

Python-Handler

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

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = '<integration_name>' [ , '<integration_name>' ... ] ]
  [ SECRETS = '<secret_variable_name>' = <secret_name> [ , '<secret_variable_name>' = <secret_name> ... ] ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

Scala-Handler

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

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ EXTERNAL_ACCESS_INTEGRATIONS = '<integration_name>' [ , '<integration_name>' ... ] ]
  [ SECRETS = '<secret_variable_name>' = <secret_name> [ , '<secret_variable_name>' = <secret_name> ... ] ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

Snowflake Scripting-Handler

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

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET
  [ LOG_LEVEL = '<log_level>' ]
  [ TRACE_LEVEL = '<trace_level>' ]
  [ COMMENT = '<string_literal>' ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET COMMENT

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER PROCEDURE [ IF EXISTS ] <name> ( [ <arg_data_type> , ... ] ) EXECUTE AS { CALLER | OWNER }
Copy

Parameter

name

Gibt den Bezeichner für die zu ändernde gespeicherte Prozedur an. 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 den Datentyp des Arguments (der Argumente) für die gespeicherte Prozedur an, sofern sie Argumente enthält. Die Argumenttypen sind notwendig, da gespeicherte Prozeduren eine Überladung von Namen unterstützen (d. h. zwei gespeicherte Prozeduren im gleichen Schema können den gleichen Namen haben) und die Argumenttypen dazu dienen, die Prozedur zu identifizieren, die Sie ändern möchten.

RENAME TO new_name

Gibt den neuen Bezeichner für die gespeicherte Prozedur 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.

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

SET ...

Gibt die Eigenschaften an, die für die gespeicherte Prozedur festgelegt werden sollen:

COMMENT = 'string_literal'

Fügt einen Kommentar hinzu oder überschreibt den vorhandenen Kommentar für die gespeicherte Prozedur. Der von Ihnen angegebene Wert wird in der Spalte DESCRIPTION der Ausgabe für SHOW PROCEDURES angezeigt.

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 Einstellung der Grade für Protokollierung, Metriken und Ablaufverfolgung.

TRACE_LEVEL = 'trace_level'

Steuert, wie Ablaufverfolgungsereignisse in die Ereignistabelle aufgenommen werden.

Weitere Informationen zu Protokolliergraden finden Sie unter TRACE_LEVEL. Weitere Informationen zum Festlegen der Ablaufverfolgungsebene finden Sie unter Einstellung der Grade für Protokollierung, Metriken und Ablaufverfolgung.

EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )

Die Namen der Integrationen für den externen Zugriff, die benötigt werden, damit der Handler-Code dieser Prozedur auf externe Netzwerke zugreifen kann.

Eine Integration für den externen Zugriff enthält Netzwerkregeln und Geheimnisse, die die externen Standorte und Anmeldeinformationen (falls vorhanden) angeben, die für den Handler-Code benötigt werden, um Anfragen an ein externes Netzwerk, wie z. B. ein externes REST API, zu stellen.

Weitere Informationen dazu finden Sie unter Übersicht über externen Netzwerkzugriff.

SECRETS = ( 'secret_variable_name' = secret_name [ , ...  ] )

Weist die Namen von Geheimnissen Variablen zu, sodass Sie die Variablen verwenden können, um auf die Geheimnisse zu verweisen, wenn Sie Informationen aus Geheimnissen im Handler-Code abrufen.

Der Wert dieses Parameters ist eine Liste von Zuweisungsausdrücken mit den folgenden Bestandteilen:

  • secret_name als Name eines Geheimnisses, das im Parameterwert einer Integration für externen Zugriff ALLOWED_AUTHENTICATION_SECRETS angegeben ist. Der Name dieser Integration für externen Zugriff muss wiederum als Wert des EXTERNAL_ACCESS_INTEGRATIONS-Parameters dieses CREATE PROCEDURE-Aufrufs angegeben werden.

    Sie erhalten einen Fehler, wenn Sie einen SECRETS-Wert angeben, dessen Geheimnis nicht auch in einer durch den EXTERNAL_ACCESS_INTEGRATIONS-Parameter angegebenen Integration enthalten ist.

  • 'secret_variable_name' als die Variable, die im Handler-Code verwendet wird, um Informationen aus dem Geheimnis abzurufen.

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 gespeicherte Prozedur deaktiviert werden sollen, wodurch sie auf die Standardwerte zurückgesetzt werden.

Derzeit können Sie nur die folgenden Eigenschaften deaktivieren:

  • COMMENT, wodurch der Kommentar zu der Prozedur, falls vorhanden, entfernt wird.

  • TAG tag_name [ , tag_name ... ]

EXECUTE AS { CALLER | OWNER }

Eine gespeicherte Prozedur kann mit den Berechtigungen des Eigentümers (gespeicherte Prozedur mit „Eigentümerrechten“) oder mit den Berechtigungen des Aufrufers (gespeicherte Prozedur mit „Aufruferrechten“) ausgeführt werden. Wenn Sie die Anweisung ALTER PROCEDURE … EXECUTE AS CALLER ausführen, wird die Prozedur künftig als Prozedur mit Aufruferrechten ausgeführt. Wenn Sie die Anweisung ALTER PROCEDURE … EXECUTE AS OWNER ausführen, wird die Prozedur künftig als Prozedur mit Eigentümerrechten ausgeführt.

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.

Beispiele

Benennen Sie die gespeicherte Prozedur procedure1 in procedure2 um:

ALTER PROCEDURE IF EXISTS procedure1(FLOAT) RENAME TO procedure2;
Copy