我是新来的进步者,我想知道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.
如果我的查询错误,请给我一个例子,以了解不同之处。我需要先使用。
答案 0 :(得分:3)
只有一条记录时没有区别。
如果有多个记录,则FOR EACH会依次处理每条记录。
FOR FIRST仍将仅处理单个记录。
答案 1 :(得分:2)
正如Mike所说,当只有一条记录(如您的示例代码中)时,没有区别。
当有多个记录时,FOR EACH处理由WHERE子句(如果存在)定义的整个集合,并按BY子句(如果存在)进行排序。
FOR FIRST还可以具有WHERE和BY。但是-FOR FIRST仅适用于一个记录。如果您指定的排序与WHERE子句产生的索引不同(或者缺少默认值),则这可能会造成极大的混乱。查询返回的第一个(也是唯一的)记录将被“排序”。换句话说,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.
首先使用几乎总是一个错误,一个错误等待发生。因此,如果指定了BY子句,无疑会如此。