Categorias:

Funções de contexto

CURRENT_AVAILABLE_ROLES

Retorna uma cadeia de caracteres (VARCHAR) que lista todas as funções de nível de conta concedidas ao usuário atual.

A cadeia de caracteres retornada contém uma lista codificada por JSONde todas as funções que o usuário pode ativar em uma sessão do usuário (usando instruções USE ROLE ou USE SECONDARY ROLES).

A lista inclui todas as funções que são concedidas diretamente ao usuário mais todas as funções inferiores nas hierarquias dessas funções. O valor retornado pode ser passado para a função PARSE_JSON para obter um VARIANT que contém uma lista de todas as funções disponíveis.

Consulte também:

CURRENT_ROLE , CURRENT_SECONDARY_ROLES , IS_ROLE_IN_SESSION

Sintaxe

CURRENT_AVAILABLE_ROLES()
Copy

Notas de uso

  • Esta função retorna uma lista de funções de nível de conta somente quando consultada por um usuário. Consultar a função utilizando um serviço que não tem usuário ativo pode resultar em uma consulta com falha. Por exemplo, a função não retorna uma lista de funções quando consultada dentro de uma tarefa, porque a execução da tarefa é executada por um serviço do sistema que não está associado a um usuário. Neste caso, a consulta poderia ser demorada porque o plano de consulta não pode ser completado.

  • Esta função não retorna os nomes das funções de banco de dados.

  • Essa função não é responsável pela ativação de funções em uma sessão.

    Por exemplo, se especificar esta função nas condições de uma política política de mascaramento ou de uma política de acesso a linhas, a política poderá restringir inadvertidamente o acesso.

    Se a ativação e a hierarquia de funções for necessária nas condições da política, use IS_ROLE_IN_SESSION.

Exemplos

Retornar a lista de funções concedidas ao usuário atual:

SELECT CURRENT_AVAILABLE_ROLES();

+----------------------------------------------------------+
| ROW | CURRENT_AVAILABLE_ROLES()                          |
+-----+----------------------------------------------------+
|  1  | [ "PUBLIC", "ANALYST", "DATA_ADMIN", "DATA_USER" ] |
+-----+----------------------------------------------------+
Copy

Use a função PARSE_JSON para retornar um VARIANT e a função FLATTEN para obter uma única linha para cada função:

SELECT INDEX,VALUE,THIS FROM TABLE(FLATTEN(input => PARSE_JSON(CURRENT_AVAILABLE_ROLES())));

+-----+-------+------------------------+---------------------------+
| ROW | INDEX | VALUE                  | THIS                      |
+-----+-------+------------------------+---------------------------+
|   1 |     0 | "PUBLIC"               | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   2 |     1 | "ANALYST"              | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   3 |     2 | "DATA_ADMIN"           | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
|   4 |     3 | "DATA_USER"            | [                         |
|     |       |                        |   "PUBLIC",               |
|     |       |                        |   "ANALYST",              |
|     |       |                        |   "DATA_ADMIN",           |
|     |       |                        |   "DATA_USER"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
Copy