- Kategorien:
Kontextfunktionen (Sitzung)
SET_SYS_CONTEXT¶
Legt einen Wert für einen bestimmten Schlüssel in einem bestimmten Namespace fest, der später mit SYS_CONTEXT abgerufen werden kann.
Diese Funktion hat zwei Vorgangsmodi:
Unveränderliche Sitzungsattribute (
SNOWFLAKE$SESSION_ATTRIBUTES-Namespace): Legt kundenspezifische Sitzungsattribute fest, die nach der Einstellung unveränderlich sind und für die Dauer der Sitzung bestehen bleiben. Nützlich für die Verfolgung von Metadaten über eine Sitzung, z. B. Anwendungskontext, Benutzerattribute oder Audit-Informationen.Sitzungsvariablen (andere Namespaces): Verhält sich wie der Befehl SET, um Sitzungsvariablen festzulegen, die aktualisiert werden können. Gibt den vorherigen Wert der Variablen zurück.
Syntax¶
Argumente¶
'namespace'Der Namespace, in dem das Schlüssel-Wert-Paar gespeichert werden soll. Unterstützte Namespaces:
SNOWFLAKE$SESSION_ATTRIBUTES: Speichert unveränderliche kundenspezifische Sitzungsattribute. Bei Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden.Eine beliebige andere Zeichenfolge (oder NULL): Behandelt den Namespace als Präfix für den Namen einer Sitzungsvariablen, ähnlich wie der Befehl SET. Bei Namespaces wird zwischen Groß- und Kleinschreibung unterschieden.
'key'Der Name des festzulegenden Attributs oder der festzulegenden Variablen. Bei sämtlichen Schlüsselnamen wird zwischen Groß- und Kleinschreibung unterschieden.
'value'Der zuzuweisende Wert. Der Wert muss eine Zeichenfolge oder ein Ausdruck sein, die bzw. der eine Zeichenfolge ergibt.
Rückgabewerte¶
Die Funktion gibt einen VARCHAR-Wert zurück.
Für den
SNOWFLAKE$SESSION_ATTRIBUTES-Namespace: Gibt immer NULL zurück (da unveränderliche Attribute keinen vorherigen Wert haben können). Wenn das Attribut bereits in der aktuellen Sitzung festgelegt wurde, gibt die Funktion stattdessen einen Fehler aus.Für andere Namespaces: Gibt den vorherigen Wert der Sitzungsvariablen oder NULL zurück, wenn die Variable zuvor nicht existierte. Dies entspricht dem Verhalten des Befehls SET.
Anforderungen an die Zugriffssteuerung¶
Es sind keine besonderen Berechtigungen erforderlich, um kundenspezifische Sitzungsattribute festzulegen. Jeder Benutzende kann Attribute in seiner eigenen Sitzung festlegen.
Nutzungshinweise¶
Für SNOWFLAKE$SESSION_ATTRIBUTES-Namespace (unveränderliche Attribute):
Attribute sind unveränderlich. Sobald ein Attribut festgelegt ist, führt jeder Versuch, es erneut festzulegen (auch für den gleichen Wert), zu einem Fehler.
Bei Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden.
app_context,App_ContextundAPP_CONTEXTwerden als drei verschiedene Attribute behandelt.Attribute sind sitzungsbezogen. Sie bleiben für die Dauer der Sitzung bestehen und sind für andere Sitzungen nicht sichtbar.
Verwenden Sie SYS_CONTEXT (SNOWFLAKE$SESSION_ATTRIBUTES-Namespace):
SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', '<key>'), um Attributwerte abzurufen.
Für andere Namespaces (Sitzungsvariablen):
Bei Variablennamen wird zwischen Groß-/Kleinschreibung unterschieden.
user_idundUSER_IDwerden als verschiedene Variablen behandelt.Variablen können aktualisiert werden. Durch die Festlegung einer Variablen, die bereits vorhanden ist, wird der vorherige Wert zurückgegeben und mit dem neuen Wert aktualisiert.
Der Namespace (falls angegeben) wird als Präfix verwendet:
SET_SYS_CONTEXT('myns', 'mykey', 'val')erstellt eine Variable mit dem Namenmyns.mykey.Variablen können mithilfe von
SYS_CONTEXT('<namespace>', '<key>')mit der genauen Schreibweise abgerufen werden, die bei der Einstellung der Variablen verwendet wurde.
Allgemeine Hinweise:
Wenn Sie den Funktionsaufruf in einer Zeichenfolge in doppelten Anführungszeichen angeben, versehen Sie das
$-Zeichen mit einem Backslash (\), als Escapezeichen, damit$session_attributesnicht als Shell-Variable interpretiert wird.
Beispiele¶
Beispiel 1: Unveränderliche Sitzungsattribute (SNOWFLAKE$SESSION_ATTRIBUTES-Namespace)
Legen Sie ein kundenspezifisches Attribut zur Verfolgung des Anwendungskontexts fest:
Rufen Sie den Attributwert ab (Hinweis: Bei Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden):
Sobald ein Attribut festgelegt ist, führt der Versuch, es zu ändern, zu einem Fehler:
Bei Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden.
Beispiel 2: Sitzungsvariablen (andere Namespaces)
Legen Sie eine Sitzungsvariable mit einem Namespace-Präfix fest:
Die Variable wird mit der genauen Schreibweise gespeichert, die angegeben wird: myapp.user_id. Rufen Sie sie ab:
Aktualisieren Sie die Variable (gibt den vorherigen Wert zurück):