返回首页

gbase数据、南大通用产品文档:GBase8sEXECUTE 语句

更新日期:2024年09月11日

您可使用 EXECUTE PROCEDURE 或 EXECUTE FUNCTION 来执行 SPL 例程或外部
例程。通常,最好将 EXECUTE PROCEDURE 用于过程,将 EXECUTE FUNCTION 用于
函数。
提示: 为了向后兼容, EXECUTE PROCEDURE 语句允许您使用 SPL 函数名称和 INTO 子
句来返回值。然而,推荐您仅将 EXECUTE PROCEDURE 用于过程,仅将 EXECUTE
FUNCTION 用于函数。
您可从 DB-Access 或从 SPL 例程或外部例程内,发出 EXECUTE PROCEDURE 和
EXECUTE FUNCTION 语句作为独立的语句。如果在数据库内该例程名称是唯一的,且如
果它不需要参数,
则您可通过在 EXECUTE PROCEDURE 之后只输入它的名称和圆括号来
执行它,如下图所示。
图: 执行过程。
EXECUTE PROCEDURE update_orders();
由于过程不返回任何值,因此,当您以 EXECUTE 语句调用过程时,从不出现 INTO 子
句。
如果例程期望参数,则您必须在圆括号内输入参数值,如下图所示。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 318 -
图: 执行带有参数的过程。
EXECUTE FUNCTION scale_rectangles(107, 1.9)
INTO new;
该语句执行函数。由于函数返回值,因此,EXECUTE FUNCTION 使用 INTO 子句,指定
存储返回值的变量。当您使用 EXECUTE 语句来执行函数时,始终出现 INTO 子句。
如果数据库有多个同名的过程或函数,则 GBase 8s 基于参数的数据类型来定位到正确的函
数。例如,前图中的语句提供 INTEGER 和 REAL 值作为参数,因此,如果您的数据库
包含名为 scale_rectangles() 的多个例程,在数据库服务器仅执行接受 INTEGER 和 REAL
数据类型的scale_rectangles() 函数。
SPL 例程的参数列表始终有参数名称及数据类型。当您执行例程时,参数名称是可选的。
然而,如果您通过名称(而不是只通过值)来将参数传到 EXECUTE PROCEDURE 或
EXECUTE FUNCTION,如下图所示,则 GBase 8s 仅逐个例程地解析名称和参数,该过程
称为部分的例程解析。
图: 执行通过名称传递参数的例程。
EXECUTE FUNCTION scale_rectangles( rectid = 107,
scale = 1.9 ) INTO new_rectangle;
您还可通过将限定的例程名称添加到语句来执行存储在另一数据库服务器上的 SPL 例程;
即,database@dbserver:owner_name.routine_name 形式的名称,如下图所示。
图: 执行存储在另一数据库服务器上的 SPL 例程。
EXECUTE PROCEDURE gbasedbt@davinci:bsmith.update_orders();
当您远程地执行例程时,限定的例程名称中的 owner_name 是可选的。

为介绍触发器,本章讨论了下列主题:

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 347 -


CREATE TRIGGER 语句的各个组成部分

可作为触发事件的 DML 语句的类型

可作为触发操作的 SQL 语句的类型

如何创建 BEFORE 和 AFTER 触发操作以及如何使用它们来确定触发语句的影


如何创建 FOR EACH ROW 触发操作,以及如何使用 REFERENCING 子句引用
触发语句执行之前和之后的列值

视图上的 INSTEAD OF 触发器,其触发事件将被忽略,但触发操作可以修改视图
的基本表

将 SPL 例程用作触发操作的好处

将触发例程作为触发操作调用的特殊功能

在触发操作的执行异常时如何跟踪它们

如何在触发操作内生成两种类型的错误消息

















GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 348 -










GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 349 -


删除 tenant 数据库
(SQL
管理 API)
随同 admin() 或 task() 函数,使用 tenant drop 参数来删除 tenant 数据库。
语法

元素
描述
关键考虑
database_name
tenant 数据库的名称。 必须是现有的 tenant 数据
库。

用法
您必须拥有 DBA 权限或已被授予 TENANT 权限来运行这个命令。不可打开其他到该数
据库的连接。
删除该数据库中的表和数据。释放 tenant 数据库专用的存储空间。从 sysadmin 数据库中
的 tenant 表中移除数据库 tenant 属性。如果不与其他任何 tenant 数据库相关,则删除相
关的 tenant 虚拟处理器类。
下列语句删除 companyA tenant 数据库:
EXECUTE FUNCTION task('tenant drop', 'companyA');