我如何从Progress OpenEdge数据库中的表中获得有限数量的记录?
类似于SQL:
SELECT TOP 100 * FROM MyTable
我能找到的唯一丑陋的解决方案是循环遍历所有记录,并在显示100条记录时中断。但我觉得应该有更好的方法。
如果您正在使用4GL,您可能还想看看使用OPEN QUERY和MAX-ROWS来实现您正在寻找的结果。下面显示了一个带有计数器的传统FOR EACH循环,然后是一个带有MAX-ROWS:
的QUERYdefine variable i as integer no-undo.
define frame a with 10 down.
for each customer no-lock break by name:
i = i + 1.
display i custNum name discount.
if i >= 5 then leave.
end.
define query q for customer scrolling.
open query q for each customer no-lock break by name max-rows 5.
do i = 1 to 5 with frame a:
get next q.
display i custNum name discount.
end.
如果你正在使用SQL-92引擎,那么像这样:
SELECT TOP 100 FROM pub.customer;
应该可以正常工作。
如果你正在使用4GL引擎,那么你不应该尝试混合SQL和4GL。它只会带来痛苦、不幸和苦恼。4GL不是SQL。有一些SQL-89语句在很久很久以前就因为市场营销的原因被放到了4GL中。试图使用它们会导致严重的情感创伤。
请按连结下载档案。希望这个问题能得到答案OpenEdge数据库
定义变量i为整数。
宽度为320的NO-LOCK:
ASSIGN i = i + 1.
如果I <= 100则显示客户地址平衡城市联系国家信用额度折扣
姓名电话邮编销售代表州条款
。