RETURN 语句结束处理。接下来发生什么取决于发出 RETURN 语句的编程上下文。
在函数中使用时,RETURN 语句停止该函数的处理,控制返回到调用表达式。将对 expression(必须存在)求值,并且充当函数的返回值。函数通过从语句列表运行离开而返回将发生错误。返回值的数据类型必须与函数声明中的数据类型相同。
在过程中使用时,RETURN 语句停止该过程的处理,控制返回到调用表达式。在过程中使用的 RETURN 语句不必具有 expression。
在 Filter、Compute 或 Database 节点的主线代码中使用时,RETURN 语句停止该节点的 ESQL 的处理,控制传递到下一个节点。在这些情况下,如果存在 expression,它必须求值得到 BOOLEAN 值。如果 expression 不存在,则 Filter 节点假设值为 UNKNOWN 并传播到它的 unknown 终端;Compute 和 Database 节点传播到它们的 out 终端。
返回值 | 结果 | |
Compute 节点: | ||
RETURN | TRUE | 将消息传播到 out 终端。 |
FALSE | 不传播。 | |
UNKNOWN | 不传播。 | |
RETURN; | 将消息传播到 out 终端。 | |
Filter 节点: | ||
RETURN | TRUE | 将消息传播到 TRUE 终端。 |
FALSE | 将消息传播到 false 终端。 | |
UNKNOWN | 将消息传播到未知终端。 | |
RETURN; | 将消息传播到未知终端。 | |
Database 节点: | ||
RETURN | TRUE | 将消息传播到 out 终端。 |
FALSE | 不传播。 | |
UNKNOWN | 不传播。 | |
RETURN; | 将消息传播到 out 终端。 |
-- Declare variables -- DECLARE a INT; DECLARE PriceTotal FLOAT; DECLARE NumItems INT; -- Initialize values -- SET a = 1; SET NumItems = 0; SET PriceTotal = 0.0; -- Calculate value of order, however if this is a bulk purchase, the -- -- order will need to be handled differently (discount given) so return TRUE -- -- or FALSE depending on the size of the order -- WHILE a <= CARDINALITY(Invoice.Purchases.Item[a] DO SET NumItems = NumItems + Invoice.Purchases.Item[a].Quantity; SET PriceTotal = PriceTotal + Invoice.Purchases.Item[a].UnitPrice; SET a = a + 1; END; RETURN PriceTotal/NumItems > 42;如果物品项的平均价格大于 42 ,则返回 TRUE;否则返回 FALSE。这样,Filter 节点可将描述贵重物品的消息从描述便宜的物品的消息路由到不同的路径。
请参阅 PROPAGATE 语句以获取防止在 Compute 节点中的处理结束时隐式传播的 RETURN FALSE 的示例。