- 类别:
CURRENT_AVAILABLE_ROLES¶
返回一个字符串 (VARCHAR),其中列出了授予当前用户的所有账户级角色。
返回的字符串包含一个 JSON 编码列表,其中列出了用户可以在用户会话中使用 USE ROLE 或 USE SECONDARY ROLES 语句激活的所有角色。
该列表包含直接授予用户的所有角色,以及这些角色的层次结构中级别较低的所有角色。可以将返回值传递给 PARSE_JSON 函数,以获取一个包含所有可用角色列表的 VARIANT。
语法¶
CURRENT_AVAILABLE_ROLES()
使用说明¶
仅当用户查询时,此函数才返回账户级别角色列表。如果使用没有活跃用户的服务来查询该函数,可能会导致查询失败。例如,在 任务 中查询该函数时,它不会返回角色列表,因为任务运行是由与用户未关联的系统服务执行的。在这种情况下,由于无法完成查询计划,查询可能会超时。
此函数不会返回数据库角色的名称。
此函数不会考虑会话中的角色激活。
例如,如果在 掩码策略 或 行访问策略 的条件中指定此函数,则策略可能会无意中限制访问。
如果策略条件需要角色激活和角色层次结构,请使用 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" | | | | | ] | +-----+-------+------------------------+---------------------------+