Как понять разницу между FOR EACH и FOR FIRST? - PullRequest
0 голосов
/ 15 апреля 2019

Я новичок в прогрессе, и я хотел бы знать, в чем разница между 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.

Ответы [ 2 ]

3 голосов
/ 15 апреля 2019

Как говорит Майк, когда есть только одна запись (как в вашем примере кода), нет никакой разницы.

При наличии нескольких записей 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.

Использование FOR FIRST почти всегда является ошибкой и ошибкой, ожидающей возникновения.Вдвойне, если указано предложение BY.

3 голосов
/ 15 апреля 2019

Нет разницы, когда есть только одна запись.

При наличии нескольких записей FOR EACH обрабатывает каждую запись, одну за другой.

FOR FIRST по-прежнему обрабатывает только одну запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...