类别:

: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
语言: 中文