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()
Copy

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

  • Cette fonction renvoie une liste de rôles au niveau du compte uniquement lorsqu’elle est interrogée par un utilisateur. L’interrogation de la fonction à l’aide d’un service qui n’a pas d’utilisateur actif peut entraîner l’échec de la requête. Par exemple, la fonction ne renvoie pas une liste de rôles lorsqu’elle est interrogée dans le cadre d’une tâche, car les exécutions de tâches sont exécutées par un service système qui n’est pas associé à un utilisateur. Dans ce cas, la requête peut être interrompue parce que le plan de requête ne peut pas être complété.

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

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