0
点赞
收藏
分享

微信扫一扫

GBase8s数据库例程级权限

晚熟的猫 2022-02-23 阅读 60

当您创建用户定义的例程(UDR),您成为该 UDR 的所有者,您自动地获得对那个 UDR 的

Execute 权限。

Execute 权限允许您以 EXECUTE FUNCTION 或 EXECUTE PROCEDURE 语句,任何一个都适用,或以

SPL 例程中的 CALL 语句来调用该 UDR。 Execute 权限还允许您使用表达式中的用户定义的函

数,如下示例所示

SELECT * FROM table WHERE in_stock(partnum) < 20;

对于需要对给定的 UDR 有 Execute 权限的用户、角色或 PUBLIC 组的成员,GRANT 语句支持

下列语法:

例程级权限

下列语句将对 delete_order 例程的 Execute 权限授予用户 finn:

GRANT EXECUTE ON ROUTINE delete_order TO finn;

您是否必须显式地授予 Execute 权限,有赖于下列条件:

如果您有 DBA 级权限,则可使用 CREATE FUNCTION 或 CREATE PROCEDURE 的

DBA 关键字来限定那些有 DBA 权限的用户的缺省 Execute 权限。您必须显式地将对那

个 UDR 的 Execute 权限显式地授予那些没有 DBA 权限的用户。

如果您有 Resource 数据库级权限但没有 DBA 权限,则当您创建 UDR 时不可使用 DBA

关键字:

o 当您在不符合 ANSI 的数据库中创建 UDR 时,PUBLIC 可执行那个 UDR。您不

需为其他获得 Execute 权限的用户发出 GRANT 语句。

o 设置 NODEFDAC 环境变量为 yes 以防 PUBLIC 执行 UDR,直到您显式地授

予 Execute 权限为止。

在符合 ANSI 的数据库中,UDR 的创建者必须显式地将该 UDR 的 Execute 权限授予其

他用户,使之能够执行它。

在 GBase 8s 中,如果两个或多个 UDR 同名,则使用下列列表中的关键字来指定用户列表可执行

那些 UDR 中的哪些。

举报

相关推荐

0 条评论