要在数据库中注册例程,被授权的用户将 SPL 命令包含在 CREATE FUNCTION 或
CREATE PROCEDURE 语句中。数据库服务器存储内部注册了的 SPL 例程。下列用户具
有在数据库中注册新的例程的资格:
•
有 DBA 权限的任何用户可在 CREATE 语句中,
使用或不使用 DBA 关键字来注
册例程。
要了解 DBA 关键字的说明,请参阅 执行例程的 DBA 权限。
•
没有 DBA 权限的用户需要 Resource 权限来注册 SPL 例程。该例程的创建者是
所有者。
没有 DBA 权限的用户不可使用 DBA 关键字来注册例程。
DBA 必须给其他需要创建例程的用户授予 Resource 权限。DBA 还可撤销
Resource 权限,防止用户创建更多的例程。
•
除了对在其中注册 UDR 的数据库保存持有 DBA 权限或 Resource 权限之外,创
建 UDR 的用户还必须持有对以其编写 UDR 的编程语言的 Usage 权限。这些
SQL 可为特定的编程语言授予语言级别的 Usage 权限:
ₒ
GRANT USAGE ON LANGUAGE C
ₒ
GRANT USAGE ON LANGUAGE JAVA
ₒ
GRANT USAGE ON LANGUAGE SPL
除了个别的用户之外,这些权限的被授予者还可为用户定义的角色,或 PUBLIC
组。在将语言级别 Usage 权限授予角色之后,持有那个角色的任何用户都可通过
使用 SQL 的 SET ROLE 语句使得该角色的所有访问权限能够指定那个角色作为
当前的角色。
对于以 C 语言或 Java™ 语言编写的外部例程,
如果启用 IFX_EXTEND_ROLE 配置参数,
则仅 DBSA 已授予其 EXTERNAL 角色的用户可注册、删除或修改外部的 UDR 或
GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 318 -
DataBlade 模块。在缺省情况下,启用此参数。通过将 IFX_EXTEND_ROLE 配置参数设
置为 OFF 或设置为 0,DBSA 可禁用对持有 DataBlade 模块或外部 UDR 的 DDL 操作
EXTEND 角色的要求。然而,此安全特性对 SPL 例程不起作用。
总之,持有以上标识的数据库级别和语言级别自主访问控制权限(且还持有 EXTEND 角
色,
如果启用 IFX_EXTEND_ROLE 且该 UDR 为外部例程的话)
的用户,
可在下列 SQL
语句中引用 UDR:
•
DBA 或用户可以 CREATE FUNCTION、CREATE FUNCTION FROM、CREATE
PROCEDURE、CREATE PROCEDURE FROM、CREATE ROUTINE 或 CREATE
ROUTINE FROM 语句来注册新的 UDR。
•
DBA 或现有 UDR 的所有者可以 DROP FUNCTION、DROP PROCEDURE 或
DROP ROUTINE 语句来取消那个 UDR 的注册。
•
DBA 或现有 UDR 的所有者可以 ALTER FUNCTION、ALTER PROCEDURE 或
ALTER ROUTINE 语句来修改那个 UDR 的定义。