您可使用 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 函数。