Snowflake creating/replacing 另一个角色创建的存储过程

Snowflake creating/replacing a stored procedure created by another role

  1. 我在 Snowflake 中有一个由 SYSADMIM 角色创建的存储过程 (return_greater(int, int))。
  2. 我还有一个自定义角色 (readwrite),它被授予内置 SYSADMIN 角色。

下面是存储过程。

create or replace procedure return_greater(number_1 integer, number_2 integer)
returns integer not null
language sql
as
$$
begin
  if (number_1 > number_2) then
    return number_1;
  else
    return number_2;
  end if;
end;
$$
;

我已使用以下命令将存储过程的所有权限授予角色 readwrite

grant all privileges on procedure DatabaseName.SchemaName.return_greater(int, int) to role READWRITE;

以下是对存储过程的授权。

现在,当我尝试使用 readwrite 角色 create/replace 存储过程时,出现以下错误 -

我的问题是如何让 readwrite 角色,create/replace 存储过程,而不实际将存储过程的所有权授予该角色。

简短的回答:不转让所有权是不可能的。

长答案:执行 CREATE 语句的授权仅来自主要角色。创建对象时,其所有权设置为当前活动的主要角色。但是,对于任何其他 SQL 操作,授予任何活动的主要或次要角色的任何权限都可用于授权该操作。

有关详细信息,请查看 here