Catégories :

Fonctions contextuelles

CURRENT_AVAILABLE_ROLES

Renvoie une chaîne (VARCHAR) qui répertorie tous les rôles accordés à l’utilisateur actuel.

La chaîne renvoyée contient une liste codée JSON de tous les rôles que l’utilisateur peut spécifier dans une instruction USE ROLE . Cela comprend tous les rôles qui sont directement accordés à l’utilisateur, ainsi que tous les rôles moins élevés dans la hiérarchie des rôles accordés indirectement à l’utilisateur. 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.

Voir aussi :

CURRENT_ROLE, IS_ROLE_IN_SESSION

Syntaxe

CURRENT_AVAILABLE_ROLES()

Notes sur l’utilisation

  • Cette fonction renvoie une liste de rôles 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é.

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