创建和使用 SPL 例程 / 执行例程 |
您可使用 CALL 语句,从 SPL 例程调用 SPL 例程或外部例程。CALL 可执行过程,也可执行函数。如果您使用 CALL 来执行函数,则请添加 RETURNING 子句和将要接收该函数返回的值的 SPL 变量的名称。
图: 调用外部函数。
CREATE FUNCTION scale_rectangles( rectid INTEGER, scale REAL ) 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 函数。