如果您从用户取消对 UDR 的 Execute 权限,则那个用户不可再以任何方式执行那个 UDR。要获取用户可如何执行 UDR 的详细信息,请参阅
例程级权限。
元素 |
描述 |
限制 |
语法 |
routine |
用户定义的例程 |
必须存在 |
标识符 |
SPL_routine |
SPL 例程 |
在该数据库中必须为唯一的 |
标识符 |
在符合 ANSI 的数据库中,owner 名称必须限定 routine 名称,除非发出 REVOKE 语句的用户为该例程的所有者。
下列示例取消用户
mark 对由
luke 所拥有的
delete_order 例程的 Execute 权限:
REVOKE EXECUTE ON ROUTINE luke.delete_order FROM mark;
在
GBase 8s
中,任何您授予 Execute 权限的取反函数都需要单独的、显式的 REVOKE 语句。
当您在任何下列环境之下创建 UDR,都不会缺省地授予 PUBLIC Execute 权限。因此,在您可取消它之前,您必须显式地授予 Execute 权限:
- 您在符合 ANSI 的数据库中创建 UDR。
- 您有 DBA 权限且在 CREATE 关键字之后指定 DBA 来将 Execute 权限限定给拥有 DBA 数据库级权限的用户。
- NODEFDAC 环境变量设置为 yes 来防止 PUBLIC 收到任何未被显式地授予的权限。
但如果您在没有任何那些条件生效的情况下创建 UDR,则 PUBLIC 可无需 GRANT EXECUTE 语句即可执行您的 UDR。要限定谁可执行您的 UDR,请通过
FROM PUBLIC 取消 Execute 权限,并将它授予用户(请参阅 用户列表)或角色(请参阅 角色名称)。
在
GBase 8s
中,如果两个或多个 UDR
有相同的名称,则请从此列表使用关键字来指定用户列表可不再执行那些 UDR 中的哪些。
- 关键字
- 防止用户执行的 UDR
- SPECIFIC
- 通过 specific name 标识的 UDR
- FUNCTION
- 任何带有指定的 routine name 的函数(以及与 routine 参数列表相匹配的参数类型,如果指定的话)
- PROCEDURE
- 任何带有指定的 routine name 的过程(以及与 routine 参数列表相匹配的参数类型,如果指定的话)
- ROUTINE
- 带有指定的 routine name 的函数或过程(以及与 routine 参数列表相匹配的参数类型,如果指定的话)