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

问题描述 投票:0回答:2

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

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 FIRST。

openedge progress-4gl
2个回答
3
投票

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

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

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


3
投票

正如迈克所说,只有一条记录(如示例代码中),没有区别。

当每个进程有多个记录时,WHERE子句定义的整个集合(如果存在)并按BY子句排序(如果存在)。

FOR FIRST也可以有一个WHERE和一个BY。但是 - FOR FIRST只能使用ONE记录。如果指定的排序不同于WHERE子句导致的索引(或缺少默认值),则可能会非常混乱。查询返回的FIRST(且唯一)记录将被“排序”。换句话说,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子句,那么双重如此。

© www.soinside.com 2019 - 2024. All rights reserved.