在模块中添加例程原型的实现
可在定义一个或多个例程原型后在模块中实现已定义例程原型的例程体。
开始之前
- 查看 ALTER MODULE 语句文档。
- 确保您具有执行 ALTER MODULE 语句的特权。
关于此任务
模块 SQL 过程一开始被允许声明为原型。SQL 过程原型允许您定义过程及其参数而不必同时指定例程体的逻辑。
在完成例程实现之前定义例程原型非常有用,并且使您不必担心交叉引用其他例程的例程的创建顺序。例如,在不使用原型的情况下,如果有 3 个例程分别名为 A、B 和 C,并且按计划您希望 A 调用 B,B 调用 C,那么必须按以下顺序创建例程:C、B、A。如果先创建例程原型,那么允许您按任意顺序实现例程、按名称引用其他例程及稍后实现例程。
不能调用没有例程体的例程。实现已定义为原型的例程的例程体是成功调用例程的先决条件。
限制
有关模块的限制,请参阅对模块的限制过程
结果
示例
CREATE MODULE moo@
ALTER MODULE moo PUBLISH PROCEDURE prot
(IN a INT, IN b BIGINT, IN c VARCHAR(20))
LANGUAGE SQL@
ALTER MODULE moo ADD PROCEDURE prot
(IN a INT, IN b BIGINT, IN c VARCHAR(20))
BEGIN
DECLARE stmt VARCHAR(1000);
DECLARE c1 CURSOR WITH RETURN FOR sl;
SET stmt = 'SELECT 1 FROM (values(1))';
PREPARE sl FROM stmt;
OPEN c1;
END@
ALTER MODULE moo PUBLISH FUNCTION fprot (r1 INT)
RETURNS int@
ALTER MODULE moo ADD FUNCTION fprot (r1 INT)
RETURNS int
BEGIN
RETURN r1-1;
END
@