Catégories :

Fonctions contextuelles

CURRENT_AVAILABLE_ROLES

Renvoie une liste de tous les rôles au niveau du compte accordés à l’utilisateur actuel. La liste comprend tous les rôles qui sont accordés directement à l’utilisateur ainsi que tous les rôles au niveau du compte inférieurs dans la hiérarchie de ces rôles.

Voir aussi :

CURRENT_ROLE , CURRENT_SECONDARY_ROLES , IS_ROLE_IN_SESSION

Syntaxe

CURRENT_AVAILABLE_ROLES()

Arguments

Aucun.

Renvoie

Renvoie une chaîne (VARCHAR) qui est une liste encodée JSON des rôles disponibles au niveau du compte. La valeur renvoyée peut être transmise à la fonction PARSE_JSON pour obtenir une VARIANT qui contient une liste de tous les rôles disponibles.

Notes sur l’utilisation

  • 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 ([]).

  • Cette fonction ne renvoie pas les noms des rôles de base de données, des rôles d’application ou des rôles d’instance de classe.

  • Cette fonction ne tient pas compte de l’activation des rôles dans une session.

    Par exemple, si l’on spécifie cette fonction dans les conditions d’une politique de masquage ou d’une politique d’accès aux lignes, la politique pourrait restreindre l’accès par inadvertance.

    Si l’activation des rôles et la hiérarchie des rôles sont nécessaires dans les conditions de la politique, utilisez IS_ROLE_IN_SESSION.

Exemples

Renvoyez la liste des rôles accordés à l’utilisateur actuel :

SELECT CURRENT_AVAILABLE_ROLES();

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

Utilisez la fonction PARSE_JSON pour renvoyer une VARIANT et la fonction FLATTEN pour obtenir une seule ligne pour chaque rôle :

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