- Kategorien:
Kontextfunktionen (Allgemein)
SYS_CONTEXT (SNOWFLAKE$APPLICATION-Namespace)¶
Gibt Informationen zu dem Kontext zurück, in dem eine Anweisung in einer Snowflake Native App ausgeführt wird.
Sie können diese Funktion in den folgenden Kontexten aufrufen:
Einer gespeicherte Prozedur oder Streamlit-App, die für die Verwendung von Eigentümerrechte vorkonfiguriert ist und sich innerhalb einer Snowflake Native App befindet oder dieser gehört.
Einer UDF, Ansicht oder Richtlinie, die einer Snowflake Native App gehört.
Einer UDF, Ansicht oder Richtlinie, die Teil von freigegebene Dateninhalten einer Snowflake Native App ist.
In jedem anderen Kontext gibt die Funktion NULL zurück.
- Siehe auch:
SYS_CONTEXT , SYS_CONTEXT (SNOWFLAKE$ENVIRONMENT-Namespace) , SYS_CONTEXT (SNOWFLAKE$ORGANIZATION-Namespace) , SYS_CONTEXT (SNOWFLAKE$ORGANIZATION_SESSION-Namespace) , SYS_CONTEXT (SNOWFLAKE$SESSION-Namespace) , IS_APPLICATION_ROLE_ACTIVATED (SYS_CONTEXT-Funktion)
Syntax¶
Syntax für das Abrufen von Eigenschaften:
SYS_CONTEXT(
'SNOWFLAKE$APPLICATION' ,
'<property>'
)
Syntax für den Aufruf von Funktionen:
SYS_CONTEXT(
'SNOWFLAKE$APPLICATION' ,
'<function>' , '<argument>' [ , ... ]
)
Argumente¶
'SNOWFLAKE$APPLICATION'Gibt an, dass Sie eine Eigenschaft abrufen oder eine Funktion aufrufen möchten, um Kontextinformationen zu der Anwendung zurückzugeben, in der die Funktion aufgerufen wird.
'property'Name der Eigenschaft, die Sie abrufen möchten. Sie können die folgenden Eigenschaften angeben:
Eigenschaft
Beschreibung
NAMEDer Name der Anwendung.
CURRENT_VERSIONAktuelle Version der Anwendung, in der die aktuelle SQL-Anweisung ausgeführt wird.
Der Wert der
CURRENT_VERSION-Eigenschaft kann sich von derINSTALLED_VERSION-Eigenschaft in den folgenden Situationen unterscheiden:Die SQL-Anweisung wird in einem:doc:
Setup-Skript </developer-guide/native-apps/creating-setup-script>ausgeführt, das die Anwendung auf eine neue Version aktualisiert.In diesem Fall ist
CURRENT_VERSIONdie neue Version, undINSTALLED_VERSIONist die aktuell installierte Version, die aktualisiert wird.Die Ausführung einer Prozedur oder Abfrage mit langer Laufzeit wurde gestartet, bevor ein Upgrade abgeschlossen war.
In diesem Fall ist
CURRENT_VERSIONdie Version, bei der die Ausführung der Prozedur oder Abfrage gestartet wurde, undINSTALLED_VERSIONist die Version nach Abschluss des Upgrades.
CURRENT_PATCHNummer des aktuellen Patches der Anwendung, in der die aktuelle SQL-Anweisung ausgeführt wird.
INSTALLED_VERSIONInstallierte Version der Anwendung, in der die aktuelle SQL-Anweisung ausgeführt wird.
INSTALLED_PATCHNummer des installierten Patches der Anwendung, in der die aktuelle SQL-Anweisung ausgeführt wird.
IS_DEV_MODETRUE, wenn sich die Anwendung im Entwicklungsmodus befindet; andernfallsFALSE.Zum Vergleich dieses Werts mit dem BOOLEAN-Wert TRUE oder FALSE müssen Sie den Wert in BOOLEAN umwandeln. Beispiel:
SELECT SYS_CONTEXT('SNOWFLAKE$APPLICATION', 'IS_DEV_MODE')::BOOLEAN = TRUE;
'function'Name der Funktion, die Sie aufrufen möchten. Sie können die folgenden Funktionen aufrufen:
'argument' [ , ... ]Argumente, die an die Funktion übergeben werden, die Sie aufrufen möchten.
Rückgabewerte¶
Die Funktion gibt einen VARCHAR-Wert oder NULL zurück:
Der Rückgabewert hängt von der Eigenschaft ab, die Sie abrufen, oder von der Funktion, die Sie aufrufen.
Wenn Sie SYS_CONTEXT mit dem SNOWFLAKE$APPLICATION-Namespace außerhalb von jeglichem unterstützten Kontext aufrufen, gibt die Funktion NULL zurück.
Nutzungshinweise¶
Wenn Sie den Funktionsaufruf in einer Zeichenfolge in doppelten Anführungszeichen angeben, versehen Sie das
$-Zeichen mit einem Backslash (\), als Escapezeichen, damit$APPLICATIONnicht als Shell-Variable interpretiert wird.Wenn Sie beispielsweise Snowflake CLI verwenden und die SQL-Anweisung als Befehlszeilenargument in doppelten Anführungszeichen angeben:
snow sql --query "SELECT SYS_CONTEXT('SNOWFLAKE\$APPLICATION', 'NAME');"
Beispiele¶
Das folgende Beispiel gibt die aktuelle Version der Anwendung zurück:
SELECT SYS_CONTEXT('SNOWFLAKE$APPLICATION', 'CURRENT_VERSION');