Categorias:

Funções de contexto (General)

SYS_CONTEXT (namespace SNOWFLAKE$SESSION_ATTRIBUTES)

Retorna um atributo de sessão personalizado que foi definido usando SET_SYS_CONTEXT no namespace SNOWFLAKE$SESSION_ATTRIBUTES.

Os atributos de sessão personalizados são imutáveis ​​após definidos e persistem durante toda a sessão. Eles são úteis para rastrear metadados sobre uma sessão, como contexto do aplicativo, atributos do usuário ou informações de auditoria.

Consulte também:

SYS_CONTEXT , SET_SYS_CONTEXT

Sintaxe

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

Argumentos

'SNOWFLAKE$SESSION_ATTRIBUTES'

Especifica que você deseja recuperar um atributo de sessão personalizado.

'key'

O nome do atributo personalizado a ser recuperado. Os nomes dos atributos diferenciam maiúsculas de minúsculas.

Retornos

A função retorna um valor VARCHAR:

  • O valor do atributo especificado se ele tiver sido definido na sessão atual usando SET_SYS_CONTEXT.

  • NULL se o atributo não tiver sido definido.

Requisitos de controle de acesso

Não são necessários privilégios especiais para recuperar atributos de sessão personalizados. Qualquer usuário pode recuperar atributos de sua própria sessão.

Notas de uso

  • Os atributos devem ser definidos usando SET_SYS_CONTEXT antes de serem recuperados.

  • Os nomes dos atributos diferenciam maiúsculas de minúsculas. app_context e APP_CONTEXT são tratados como atributos diferentes.

  • Os atributos têm escopo de sessão e não são visíveis para outras sessões.

  • Se você estiver especificando a chamada da função em uma cadeia de caracteres entre aspas duplas em um shell, aplique o escape do caractere $ com uma barra invertida (\) para que $session_attributes não seja interpretado como uma variável do shell.

Exemplos

O exemplo a seguir define um atributo personalizado e, em seguida, o recupera:

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

Recuperar um atributo que não foi definido retorna NULL:

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

Os nomes dos atributos diferenciam maiúsculas de minúsculas:

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