类别:

上下文函数

CURRENT_AVAILABLE_ROLES

返回一个字符串 (VARCHAR),其中列出了授予当前用户的所有账户级角色。

返回的字符串包含一个 JSON 编码列表,其中列出了用户可以在用户会话中使用 USE ROLEUSE SECONDARY ROLES 语句激活的所有角色。

该列表包含直接授予用户的所有角色,以及这些角色的层次结构中级别较低的所有角色。可以将返回值传递给 PARSE_JSON 函数,以获取一个包含所有可用角色列表的 VARIANT。

另请参阅:

CURRENT_ROLECURRENT_SECONDARY_ROLESIS_ROLE_IN_SESSION

语法

CURRENT_AVAILABLE_ROLES()
Copy

使用说明

  • 仅当用户查询时,此函数才返回账户级别角色列表。如果使用没有活跃用户的服务来查询该函数,可能会导致查询失败。例如,在 任务 中查询该函数时,它不会返回角色列表,因为任务运行是由与用户未关联的系统服务执行的。在这种情况下,由于无法完成查询计划,查询可能会超时。

  • 此函数不会返回数据库角色的名称。

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

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

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

示例

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

SELECT CURRENT_AVAILABLE_ROLES();

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

使用 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"             |
|     |       |                        | ]                         |
+-----+-------+------------------------+---------------------------+
Copy
语言: 中文