如何從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