7

Progress OpenEdge データベースのテーブルから限られた数のレコードを取得するにはどうすればよいですか?

SQLのようなもの:

SELECT TOP 100 * FROM MyTable

私が見つけることができる唯一の醜い解決策は、すべてのレコードをループして、100 個のレコードが表示されたときに中断することです。しかし、それを行うためのより良い方法が必要なように感じます。

4

4 に答える 4

10

4GL を使用している場合は、探している結果を得るために OPEN QUERY と MAX-ROWS の使用を検討することもできます。以下は、カウンターを使用した従来の FOR EACH ループと、MAX-ROWS を使用した QUERY を示しています。

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.
于 2011-10-07T21:56:07.193 に答える
7

SQL-92 エンジンを使用している場合は、次のようになります。

pub.customer から上位 100 件を選択します。

うまくいくはずです。

4GL エンジンを使用している場合は、SQL を 4GL とブレンドしようとしないでください。それは苦痛、惨めさ、苦しみにつながるだけです。4GL は SQL ではありません。かなり昔にマーケティング上の理由で 4GL に組み込まれた SQL-89 ステートメントがいくつかあります。それらを使用しようとすると、深刻な感情的トラウマが発生します。あなたは警告されました。

于 2011-10-07T15:20:10.447 に答える
0

リンクに従ってファイルをダウンロードしてください。質問がOpenEdge Databaseで答えられることを願ってい ます

于 2011-10-07T06:02:33.503 に答える
-2

変数 i を INTEGER NO-UNDO として定義します。

幅 320 の NO-LOCK のお客様ごとに:

ASSIGN i = i + 1.

if i <= 100 then DISP CustNum Address Balance City Contact Country CreditLimit 割引
名 Phone PostalCode SalesRep State Terms .

終わり。

于 2017-06-22T12:26:02.353 に答える