Kategorien:

Kontextfunktionen (Allgemein)

SYS_CONTEXT (SNOWFLAKE$SESSION_ATTRIBUTES-Namespace)

Gibt ein kundenspezifisches Sitzungsattribut zurück, das mit SET_SYS_CONTEXT im SNOWFLAKE$SESSION_ATTRIBUTES-Namespace festgelegt wurde.

Kundenspezifische Sitzungsattribute sind nach der Einstellung unveränderlich und bleiben für die Dauer der Sitzung bestehen. Sie sind nützlich für die Verfolgung von Metadaten über eine Sitzung, z. B. Anwendungskontext, Benutzerattribute oder Audit-Informationen.

Siehe auch:

SYS_CONTEXT, SET_SYS_CONTEXT

Syntax

SYS_CONTEXT(
  'SNOWFLAKE$SESSION_ATTRIBUTES' ,
  '<key>'
)

Argumente

'SNOWFLAKE$SESSION_ATTRIBUTES'

Gibt an, dass Sie ein kundenspezifisches Sitzungsattribut abrufen möchten.

'key'

Der Name des abzurufenden kundenspezifischen Attributs. Bei Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden.

Rückgabewerte

Die Funktion gibt einen VARCHAR-Wert zurück.

  • Der Wert des angegebenen Attributs, wenn es in der aktuellen Sitzung mit SET_SYS_CONTEXT festgelegt wurde.

  • NULL, wenn das Attribut nicht festgelegt wurde.

Anforderungen an die Zugriffssteuerung

Es sind keine besonderen Berechtigungen erforderlich, um kundenspezifische Sitzungsattribute abzurufen. Jeder Benutzende kann Attribute aus seiner eigenen Sitzung abrufen.

Nutzungshinweise

  • Attribute müssen mit SET_SYS_CONTEXT festgelegt werden, bevor sie abgerufen werden können.

  • Bei Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden. app_context und APP_CONTEXT werden als verschiedene Attribute behandelt.

  • Attribute gelten für die Sitzung und sind für andere Sitzungen nicht sichtbar.

  • Wenn Sie den Funktionsaufruf in einer Zeichenfolge in doppelten Anführungszeichen angeben, versehen Sie das $-Zeichen mit einem Backslash (\), als Escapezeichen, damit $session_attributes nicht als Shell-Variable interpretiert wird.

Beispiele

Im folgenden Beispiel wird ein kundenspezifisches Attribut festgelegt und anschließend abgerufen:

-- Set a custom session attribute
CALL SET_SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'app_context', 'production');

-- Retrieve the custom attribute
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'app_context');
+---------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'app_context')   |
|---------------------------------------------------------------|
| production                                                    |
+---------------------------------------------------------------+

Beim Abrufen eines Attributs, das nicht festgelegt wurde, wird NULL zurückgegeben:

SELECT SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'nonexistent_attr');
+------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'nonexistent_attr') |
|------------------------------------------------------------------|
| NULL                                                             |
+------------------------------------------------------------------+

Bei Attributnamen wird zwischen Groß- und Kleinschreibung unterschieden:

-- Set attributes with different cases
CALL SET_SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'mykey', 'lowercase');
CALL SET_SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'MyKey', 'mixedcase');
CALL SET_SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'MYKEY', 'uppercase');

-- Each is a distinct attribute
SELECT
  SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'mykey') AS lower,
  SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'MyKey') AS mixed,
  SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'MYKEY') AS upper;
+-----------+-----------+-----------+
| LOWER     | MIXED     | UPPER     |
|-----------+-----------+-----------|
| lowercase | mixedcase | uppercase |
+-----------+-----------+-----------+