Categorias:

Funções de contexto (General)

IS_DATABASE_ROLE_ACTIVATED (função SYS_CONTEXT)

Retorna o valor VARCHAR 'TRUE' se uma função de banco de dados está ativada na sessão atual.

Consulte também:

SYS_CONTEXT (namespace SNOWFLAKE$SESSION) IS_ROLE_ACTIVATED (função SYS_CONTEXT)

Sintaxe

SYS_CONTEXT(
  'SNOWFLAKE$SESSION' ,
  'IS_DATABASE_ROLE_ACTIVATED' ,
  '<database_role>'
)
Copy

Argumentos

'SNOWFLAKE$SESSION'

Especifica que você deseja chamar uma função para retornar informações de contexto sobre a sessão atual.

'IS_DATABASE_ROLE_ACTIVATED'

Chama a função IS_DATABASE_ROLE_ACTIVATED.

'database_role'

Especifica a função de banco de dados a ser verificada. O nome pode ser totalmente qualificado ou relativo.

Retornos

A função retorna um dos seguintes valores VARCHAR:

  • 'TRUE' se a função primária ou secundária ativa do usuário atual na sessão herdar os privilégios da função de banco de dados especificada.

  • 'FALSE' se a função do banco de dados especificada não estiver na hierarquia de funções ativas do usuário, ou se a função de banco de dados não existir.

Para comparar esse valor de retorno com o valor BOOLEAN TRUE ou FALSE, converta o valor de retorno para BOOLEAN. Por exemplo:

SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'my_db_role')::BOOLEAN = TRUE;
Copy

Notas de uso

  • Esta função não é suportada em políticas de governança (como as de mascaramento, acesso a linhas ou projeção) aplicadas a tabelas compartilhadas. Objetos compartilhados não podem acessar o estado da sessão do consumidor.

  • Se você não especificar um nome totalmente qualificado, a função resolverá o contexto do banco de dados da função de banco de dados da seguinte forma:

    • Consultas: banco de dados da sessão (o banco de dados que está em uso).

    • Corpo de uma política de proteção de dados: banco de dados que contém a tabela ou exibição protegida.

    • Compartilhamento: banco de dados na conta do consumidor.

  • Essa função não pode ser usada em definições de exibição materializada porque a função não é determinística.

Exemplos

Verificar uma função de banco de dados no banco de dados atual usando um nome relativo:

SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANALYST_ROLE');
Copy
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANA...  |
+-------------------------------------------------------------------------+
| TRUE                                                                    |
+-------------------------------------------------------------------------+

Verificar uma função de banco de dados em um banco de dados diferente usando um nome totalmente qualificado:

SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB2.READER_ROLE');
Copy
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB ...  |
+-------------------------------------------------------------------------+
| TRUE                                                                    |
+-------------------------------------------------------------------------+