- 类别:
:doc:`/sql-reference/functions-context`(会话对象)
IS_GRANTED_TO_INVOKER_ROLE¶
如果 INVOKER_ROLE 函数返回的角色根据调用函数的上下文继承实参中指定角色的权限,则返回 TRUE。
INVOKER_ROLE 函数仅标识并返回执行 SQL 语句的对象的账户角色。不支持数据库角色。
语法¶
IS_GRANTED_TO_INVOKER_ROLE( '<string_literal>' )
实参¶
'string_literal'
角色的名称。
使用说明¶
如果将 IS_GRANTED_TO_INVOKER_ROLE 函数与 掩码策略 或 行访问策略 结合使用,请验证您的 Snowflake 账户是否为 Enterprise Edition 或更高版本。
只能传递一个角色名称作为实参。
下表总结了可以在其中调用函数的上下文以及 Snowflake 评估的角色层次结构。
上下文
评估的角色
用户
表
CURRENT_ROLE。
视图
查看所有者角色。
UDF
UDF 所有者角色。
拥有调用方权限的存储过程
CURRENT_ROLE。
拥有所有者权限的存储过程
存储过程所有者角色。
任务
任务所有者角色。
流
查询给定 流 的角色。
如果希望评估当前会话的角色层次结构,请改为调用 IS_ROLE_IN_SESSION。
示例¶
直接调用该函数:
IS_GRANTED_TO_INVOKER_ROLE('ANALYST') --------------------------------------+ IS_GRANTED_TO_INVOKER_ROLE('ANALYST') | --------------------------------------+ TRUE | --------------------------------------+
在掩码策略正文中指定该函数:
CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
WHEN IS_GRANTED_TO_INVOKER_ROLE('ANALYST') then val
ELSE '*******'
END;