Categorias:

Funções de contexto

CURRENT_AVAILABLE_ROLES

Retorna uma lista de todas as funções de nível de conta concedidas ao usuário atual. A lista inclui todas as funções concedidas diretamente ao usuário, além de todas as funções de nível de conta mais baixas nas hierarquias dessas funções.

Consulte também:

CURRENT_ROLE , CURRENT_SECONDARY_ROLES , IS_ROLE_IN_SESSION

Sintaxe

CURRENT_AVAILABLE_ROLES()

Argumentos

Nenhum.

Retornos

Retorna uma cadeia de caracteres (VARCHAR) que é uma lista codificada em JSON de funções disponíveis em nível de conta. 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.

Notas de uso

  • This function returns a list of account-level roles only when queried by a user. This function is not supported in service contexts that don’t have an active user. For example, tasks are executed by a system service that is not associated with a user. Thus, when this function is queried within a task, it returns an empty list ([]).

  • Esta função não retorna os nomes de funções de banco de dados, funções de aplicativo ou funções de instância de classe.

  • 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" ] |
+-----+----------------------------------------------------+

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