返回首页

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

更新日期:2024年09月11日

您可使用 CALL 语句,从 SPL 例程调用 SPL 例程或外部例程。CALL 可执行过程,也
可执行函数。如果您使用 CALL 来执行函数,则请添加 RETURNING 子句和将要接收该
函数返回的值的 SPL 变量的名称。
例如,假设您想要 scale_rectangles 函数调用计算矩形面积的外部函数,然后返回带有矩形
描述的面积,如下图所示。
图: 调用外部函数。
CREATE FUNCTION scale_rectangles( rectid INTEGER,
scale REAL )

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

RETURNING rectangle_t, REAL;

DEFINE rectv rectangle_t;
DEFINE a REAL;
SELECT rect INTO rectv
FROM rectangles WHERE id = rectid;
IF ( rectv IS NULL ) THEN
LET rectv.start = (0.0,0.0);
LET rectv.length = 1.0;
LET rectv.width = 1.0;
LET a = 1.0;
RETURN rectv, a;
ELSE
LET rectv.length = scale * rectv.length;
LET rectv.width = scale * rectv.width;
CALL area(rectv.length, rectv.width) RETURNING a;
RETURN rectv, a;
END IF;

END FUNCTION;
该 SPL 函数使用执行外部函数 area() 的 CALL 语句。返回的值 area() 保存在 a 中,并通
过 RETURN 语句返回到调用例程。
在此示例中,area() 是外部函数,但您可以同样的方式将 CALL 用于 SPL 函数。


GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
72

V8.5.1.2 版本集群不允许直接升级到V9.5.X.X 版本,
需先升级到V8.6.X.X 版本后,
再从V8.6.X.X 版本升级到V9.5.2.X 版本。