- 类别:
系统函数 (系统信息)
EXPLAIN_GRANTABLE_PRIVILEGES¶
返回一个 JSON 字符串,表示 Snowflake 中每种对象类型的所有可授予权限。此函数提供关于不同对象类型上可授予哪些权限的全面信息,包括每种权限对应的可用授权类型。
语法¶
实参¶
所有实参都是可选的,并使用命名参数语法:
grantee => 'grantee_type'按授权对象类型筛选结果。有效值:模型监视器名称字符串。
ROLEAPPLICATION
默认:
ROLE被授权者类型决定了哪些权限可用。例如,应用程序无法单独拥有对象的所有权。
object_type => 'object_type_name'将筛选结果限定为单一对象类型。接受对象类型名称的单数形式(例如,
'DATABASE'、'TABLE'、'SCHEMA')。文本不区分大小写。grant_type => 'grant_type_name'将筛选结果限定为支持特定授权类型的权限。有效值:模型监视器名称字符串。
'INDIVIDUAL'– 对单个对象的授权。请参阅 GRANT <privileges> ... TO ROLE。'ALL'– 对所有当前对象的批量授权(例如,GRANT ... ON ALL TABLES IN SCHEMA)。请参阅 GRANT <privileges> ... TO ROLE。'FUTURE'– 对未来对象的批量授权(例如,GRANT ... ON FUTURE TABLES IN SCHEMA)。请参阅 对数据库或架构对象的未来授权。'INHERITED'– 对容器中当前和未来对象的批量授权(组合ALL和FUTURE)。请参阅 GRANT <privileges> ... TO ROLE。'CALLER'– 调用者授权 对各个对象的权限。请参阅 GRANT CALLER。'INHERITED_CALLER'– 对容器中所有当前及未来的对象进行批量调用者授权(例如,GRANT INHERITED CALLER ... ON ALL TABLES IN SCHEMA)。请参阅 GRANT CALLER。
文本不区分大小写。
返回¶
该函数返回一个包含 JSON 数组的 VARCHAR。数组中的每个元素都是一个 JSON 对象,代表一种对象类型,并具有以下结构:
JSON 字段:
parent– 对象层次结构中的父对象类型(例如,SCHEMA 是 TABLE 的父级)。对于像 ACCOUNT 这样的顶级对象,该字符串为空。singular– 对象类型名称的单数形式(例如,DATABASE)。用于个人授权。plural– 对象类型名称的复数形式(例如 DATABASES)。用于批量授权。privileges– 一个映射,其中每个键为一个权限名称,每个值为一个授权类型名称数组,用于指明该权限可通过哪些授权类型进行授予。
使用说明¶
所有实参都必须是常量表达式。不能传递列值或其他非常量表达式。
如果未提供实参,则该函数将返回所有对象类型中角色的所有可授予权限。
示例¶
以下示例调用 EXPLAIN_GRANTABLE_PRIVILEGES 函数:
获取角色的所有可授予权限¶
返回角色的所有对象类型及其可授予的权限:
获取特定对象类型的权限¶
仅返回 'DATABASE' 对象类型的权限:
输出示例:
按授权对象类型筛选¶
可用于应用程序的返回权限:
应用程序不能拥有个人所有权,因此 OWNERSHIP 仅显示授权类型,例如 'ALL'、'FUTURE' 和 'INHERITED'。