我如何理解 FOR EACH 和 FOR FIRST 之间的区别?

How do I Understand the difference between FOR EACH and FOR FIRST?

我是新手,我想知道 FOR EACH 和 FOR FIRST 之间的区别。我试图知道但没有得到可以理解和可接受的理由。我写了一个小查询并得到了相同的 result.Let 我分享

DEFINE TEMP-TABLE tt_data
    FIELD womf AS CHARACTER
    FIELD pomf AS CHARACTER.

CREATE tt_data.
ASSIGN
    tt_data.womf = "BlockCar"
    tt_data.pomf = "Whitecar".


FOR EACH tt_data.
    DISPLAY tt_data.womf.
END.

FOR FIRST tt_data.
    DISPLAY tt_data.womf.
END.

如果我的查询有误,请给我一个例子来理解其中的区别。我需要先使用。

只有一条记录时没有区别。

当有多条记录时,FOR EACH 处理每条记录,一条接一条。

FOR FIRST 仍然只会处理一条记录。

正如 Mike 所说,当只有一条记录时(就像在您的示例代码中一样)没有区别。

当有多个记录时,FOR EACH 处理由 WHERE 子句(如果存在)定义的整个集合并按 BY 子句(如果存在)排序。

FOR FIRST 也可以有一个 WHERE 和一个 BY。但是—— FOR FIRST 只适用于一条记录。如果您指定的排序不同于 WHERE 子句产生的索引(或者缺少默认索引),这可能会非常混乱。查询返回的第一条(也是唯一一条)记录将是 "sorted"。换句话说,BY 对选择没有影响。

下面的 sports2000 例子说明了这一点:

for each customer no-lock where custNum > 10 by name:
  display custNum name.
end.
pause.

for first customer no-lock where custNum > 10 by name:
  display custNum name.
end.

使用 FOR FIRST 几乎总是一个错误和等待发生的错误。如果指定了 BY 子句,则加倍。