我如何使用 FOR every,浏览表格以查找 OpenEdge 中升序的字段之一?

Den*_*iss 5 progress-4gl openedge

例如,我有一个包含字段“sub_id”的表,其未按升序或降序排序。我想对每个从最小的 sub_id 到最大的 sub_id 进行操作,我该怎么做?

Jen*_*nsd 5

您应该使用关键字 BY。如果您排序所依据的字段未建立索引,则速度可能会很慢并且会消耗系统资源。这在大桌子上最为明显。

/* Smallest to largest */
FOR EACH tablename NO-LOCK BY tablename.sub_id:
  /* Do something */
END.

/* Largest to smallest sub_id */
FOR EACH tablename NO-LOCK BY tablename.sub_id DESCENDING:
  /* Do something */
END.

/* With a WHERE clause */
FOR EACH tablename NO-LOCK WHERE tablename.field = "something" BY tablename.sub_id:
  /* Do something */
END.
Run Code Online (Sandbox Code Playgroud)

如果你想改变数据(更新、分配等),上面的 NO-LOCK 将不起作用。NO-LOCK 用于只读操作(如显示数据)。独占锁用于更新/删除等。