更改存储过程
您可以使用 ALTER PROCEDURE 更改存储过程并保留其授权。
示例
下面的示例使用以下过程:
=> CREATE PROCEDURE echo_integer(IN x int) LANGUAGE PLvSQL AS $$
BEGIN
RAISE INFO 'x is %', x;
END;
$$;
默认情况下,存储过程以调用者的权限执行,因此,调用者必须对存储过程访问的编录对象具有必要的权限。您可以通过指定 SECURITY 选项的 DEFINER,来允许调用者使用定义者的权限、默认角色、用户参数、和用户属性 (RESOURCE_POOL、MEMORY_CAP_KB、TEMP_SPACE_CAP_KB、RUNTIMECAP)。
使用以下对象的权限执行过程...
-
定义者(所有者):
=> ALTER PROCEDURE echo_integer(int) SECURITY DEFINER;
-
调用者:
=> ALTER PROCEDURE echo_integer(int) SECURITY INVOKER;
更改过程的源代码:
=> ALTER PROCEDURE echo_integer(int) SOURCE TO $$
BEGIN
RAISE INFO 'the integer is: %', x;
END;
$$;
更改过程的所有者(定义者):
=> ALTER PROCEDURE echo_integer(int) OWNER TO u1;
更改过程的架构:
=> ALTER PROCEDURE echo_integer(int) SET SCHEMA s1;
重命名过程:
=> ALTER PROCEDURE echo_integer(int) RENAME TO echo_int;