SYS_CONTEXT(SNOWFLAKE$SESSION_ATTRIBUTES 命名空间)
返回在 SNOWFLAKE$SESSION_ATTRIBUTES 命名空间中使用 SET_SYS_CONTEXT 设置的自定义会话属性。
自定义会话属性一经设置便不可变,并在会话持续期间一直存在。它们对于跟踪有关会话的元数据非常有用,例如应用程序上下文、用户属性或审计信息。
- 另请参阅:
SYS_CONTEXT、SET_SYS_CONTEXT
语法
SYS_CONTEXT(
'SNOWFLAKE$SESSION_ATTRIBUTES' ,
'<key>'
)
实参
'SNOWFLAKE$SESSION_ATTRIBUTES'指定要检索自定义会话属性。
'key'要检索的自定义属性的名称。属性名称 区分大小写。
访问控制要求
检索自定义会话属性不需要特殊权限。任何用户都可以从其自己的会话中检索属性。
使用说明
属性必须在检索之前使用 SET_SYS_CONTEXT 进行设置。
属性名称 区分大小写。app_context 和 APP_CONTEXT 被视为不同的属性。
属性的范围限定在会话内,对其他会话不可见。
如果您在 Shell 的双引号字符串中指定函数调用,请使用反斜杠 (\) 转义 $ 字符,以免 $session_attributes 被解释为 Shell 变量。
示例
以下示例设置了一个自定义属性,然后对其进行检索:
-- 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 |
+---------------------------------------------------------------+
检索尚未设置的属性会返回 NULL:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'nonexistent_attr');
+------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'nonexistent_attr') |
|------------------------------------------------------------------|
| NULL |
+------------------------------------------------------------------+
属性名称区分大小写:
-- 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 |
+-----------+-----------+-----------+