如何从Progress OpenEdge数据库中的表中获取有限数量的记录?在Progress OpenEdge数据库中获取前100个记录(例如SELECT TOP 100 ..)
喜欢的东西在SQL:
SELECT TOP 100 * FROM MyTable
唯一的丑陋的解决方案,我可以找到通过所有记录循环,当被展示其中的100断裂。但感觉应该有一些更好的方式来做到这一点。
如何从Progress OpenEdge数据库中的表中获取有限数量的记录?在Progress OpenEdge数据库中获取前100个记录(例如SELECT TOP 100 ..)
喜欢的东西在SQL:
SELECT TOP 100 * FROM MyTable
唯一的丑陋的解决方案,我可以找到通过所有记录循环,当被展示其中的100断裂。但感觉应该有一些更好的方式来做到这一点。
如果您正在使用4GL,您可能还想使用OPEN QUERY和MAX-ROWS来获得您所期望的结果。下面显示了一个传统的用于与计数器,然后用MAX-行的查询中的每个循环:
define 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.
请点击链接下载文件。希望这个问题会回答它 OpenEdge Database
如果您使用的是SQL-92的发动机则是这样的:
SELECT TOP 100 FROM pub.customer;
应该工作得很好。
如果您使用4GL引擎,那么您不应该尝试将SQL与4GL混合。它只会导致痛苦,苦难和痛苦。 4GL不是SQL。由于营销的原因,早在很久以前,就有一些SQL-89语句被放入4GL中。试图使用它们会导致严重的情绪创伤。你被警告了。
DEFINE量I as INTEGER NO-UNDO。
为每个客户NO-LOCK宽度为320:
ASSIGN i = i + 1.
如果我< = 100则 DISP CustNum地址平衡市联系 国家CREDITLIMIT折扣
姓名电话POSTALCODE SalesRep的国家条款。
END。
不是一个好的解决方案。如果您有一百万个客户记录,那么在您显示前100个记录后,这个记录将继续通过其他999,900个记录。 – TheDrooper
不幸的是,我只能给你1 upvote。你的话语完全描述了我父亲的经历! – profimedica