- 类别:
:doc:`/sql-reference/functions-context`(会话对象)
INVOKER_SHARE¶
如果共享直接访问了调用 INVOKER_SHARE 函数的表或视图,则此函数返回该共享的名称。在其他情况下,此函数返回 NULL。
本主题内容:
语法¶
INVOKER_SHARE()
Copy
实参¶
无。
使用说明¶
如果将 INVOKER_SHARE 函数与 掩码策略 结合使用,请验证您的 Snowflake 账户是否为 Enterprise Edition 或更高版本。
在附加到由共享直接调用的表或视图的策略中使用 INVOKER_SHARE 函数。
如果在直接附加到表或视图的掩码策略中的 用户定义函数概述 内使用 INVOKER_SHARE 函数,INVOKER_SHARE 会返回 NULL,因为 INVOKER_SHARE 函数的上下文是 UDF 所有者,而不是共享。
若要帮助确定表或视图是由共享直接调用还是间接调用,请考虑在掩码策略中使用 CURRENT_ACCOUNT 函数。此函数返回用户当前会话的 Snowflake 账户,这有助于确定表或视图是否从数据共享使用者账户调用。
示例¶
假设有一个数据共享提供商账户,它在安全视图的一列上设置了掩码策略。有两个不同的共享可以访问安全视图,以支持两个不同的数据共享使用者。
数据共享提供商会创建以下策略,使用 UDFs 来标识正在访问的共享。如果数据共享使用者账户中的用户尝试通过任一共享查询数据,他们会根据 UDFs 写入方式看到数据,否则将看到固定的掩码值。
create or replace masking policy mask_share as (val string) returns string -> case when invoker_share() in ('SHARE1') then mask1_function(val) when invoker_share() in ('SHARE2') then mask2_function(val) else '***MASKED***' end;Copy