SPL(Stored Procedure Language)是在 GBase 8s 中提供的一种流程控制(分
支和循环)的 SQL,是 GBase
8s 对标准SQL的扩充,用于编写存储过程。GBase
8s 的
存储过程包括 SPL 过程(没有返回值)和 SPL 函数(有返回值)。在创建 SPL 时,
创建者需要对数据库拥有 Resource 或以上权限。
在 GBase
8s 中,
触发器
(Trigger)
是一个特殊的存储过程。
在对表执行 INSERT、
DELETE 或 UPDATE 操作时,通过定义触发器使 GBase 8s 自动调用存储过程或SQL语
句。由于触发器是由系统所调用执行,所以触发器不涉及执行权限。
同视图相似,
对于 SPL 执行时的权限判定也受SPL本身权限和 SPL 内SQL 访问的
基本表权限所限制。在 GBase
8s 的权限判定规则中,只要 SPL 的创建者和使用者其
GRANT VIEW customer_view AS
SELECT *
FROM customer_table
WHERE AS customer_id = 199;
GRANT SELECT, UPDATE ON customer_view TO usera, userb, userc;
GRANT ALL ON customer_view TO PUBLIC;
REVOKE ALL ON customer_view FROM PUBLIC;
REVOKE UPDATE ON customer_view FROM usera, userb, userc;
GBase 8s 安全技术指南
南大通用数据技术股份有限公司
- 18 -
中有一人对被 SPL 访问的基本表有权限,即可判定该 SPL 权限通过,其判定规则如
下表所示:
表 4 SPL权限判定
SPL权限
创建者
基本表权限
访问者
基本表权限
权限判定
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
No
Yes
Yes
Yes
No
No
No
No
Yes
Yes
No
No
Yes
No
No
No
No
Yes
No
No
No
No
No
对于存储过程权限的授予和收回,语法同于对表的权限授予和收回相似,示例如
下:
授权语法示例如下:
收回权限语法示例如下: