カテゴリ:

コンテキスト関数 (一般)

SYS_CONTEXT(SNOWFLAKE$SESSION_ATTRIBUTES 名前空間)

SNOWFLAKE$SESSION_ATTRIBUTES 名前空間で SET_SYS_CONTEXT を使用して設定されたカスタムセッション属性を返します。

カスタムセッション属性は一度設定されると不変であり、セッションの間持続します。これらは、アプリケーションコンテキスト、ユーザー属性、監査情報など、セッションに関するメタデータを追跡するのに役立ちます。

こちらもご参照ください。

SYS_CONTEXTSET_SYS_CONTEXT

構文

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

引数

'SNOWFLAKE$SESSION_ATTRIBUTES'

カスタムセッション属性を取得することを指定します。

'key'

取得するカスタム属性の名前。属性名は**大文字と小文字を区別**します。

戻り値

この関数は VARCHAR 値を返します。

  • SET_SYS_CONTEXT を使用して現在のセッションで設定されている場合は、指定された属性の値。

  • 属性が設定されていない場合は NULL。

アクセス制御の要件

カスタムセッション属性を取得するために、特別な権限は必要ありません。任意のユーザーが自分のセッションから属性を取得できます。

使用上の注意

  • 属性は、取得する前に SET_SYS_CONTEXT を使用して設定する必要があります。

  • 属性名は**大文字と小文字を区別**します。app_contextAPP_CONTEXT は異なる属性として扱われます。

  • 属性はセッションスコープであり、他のセッションには表示されません。

  • シェルの二重引用符で囲まれた文字列で関数呼び出しを指定する場合は、 $ 文字をバックスラッシュ(\)でエスケープして、 $session_attributes がシェル変数として解釈されないようにします。

以下の例では、カスタム属性を設定し、それを取得します。

-- 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 |
+-----------+-----------+-----------+