- Categorias:
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:
Sintaxe¶
CURRENT_AVAILABLE_ROLES()
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" ] | +-----+----------------------------------------------------+
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" | | | | | ] | +-----+-------+------------------------+---------------------------+