类别:

上下文函数

CURRENT_AVAILABLE_ROLES

返回为当前用户授予的所有账户级角色的列表。该列表包含直接授予用户的所有角色,以及这些角色的层次结构中级别较低的所有角色。

另请参阅:

CURRENT_ROLECURRENT_SECONDARY_ROLESIS_ROLE_IN_SESSION

语法

CURRENT_AVAILABLE_ROLES()

实参

无。

返回

返回一个字符串 (VARCHAR),它是可用账户级角色的 JSON-编码列表。可以将返回值传递给 PARSE_JSON 函数,以获取一个包含所有可用角色列表的 VARIANT。

使用说明

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

  • 此函数不会返回数据库角色、应用程序角色或类实例角色的名称。

  • 此函数不会考虑会话中的角色激活。

    例如,如果在 掩码策略行访问策略 的条件中指定此函数,则策略可能会无意中限制访问。

    如果策略条件需要角色激活和角色层次结构,请使用 IS_ROLE_IN_SESSION

示例

返回授予当前用户的角色的列表:

SELECT CURRENT_AVAILABLE_ROLES();

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

使用 PARSE_JSON 函数返回一个 VARIANT,并使用 FLATTEN 函数获取与每个角色对应的一行:

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