我是新手,我想知道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。
只有一条记录时没有区别。
当有多个记录时,FOR EACH每个记录一个接一个地处理。
FOR FIRST仍然只处理一条记录。
正如迈克所说,只有一条记录(如示例代码中),没有区别。
当每个进程有多个记录时,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子句,那么双重如此。