Progress OpenEdge データベースのテーブルから限られた数のレコードを取得するにはどうすればよいですか?
SQLのようなもの:
SELECT TOP 100 * FROM MyTable
私が見つけることができる唯一の醜い解決策は、すべてのレコードをループして、100 個のレコードが表示されたときに中断することです。しかし、それを行うためのより良い方法が必要なように感じます。
Progress OpenEdge データベースのテーブルから限られた数のレコードを取得するにはどうすればよいですか?
SQLのようなもの:
SELECT TOP 100 * FROM MyTable
私が見つけることができる唯一の醜い解決策は、すべてのレコードをループして、100 個のレコードが表示されたときに中断することです。しかし、それを行うためのより良い方法が必要なように感じます。
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.
SQL-92 エンジンを使用している場合は、次のようになります。
pub.customer から上位 100 件を選択します。
うまくいくはずです。
4GL エンジンを使用している場合は、SQL を 4GL とブレンドしようとしないでください。それは苦痛、惨めさ、苦しみにつながるだけです。4GL は SQL ではありません。かなり昔にマーケティング上の理由で 4GL に組み込まれた SQL-89 ステートメントがいくつかあります。それらを使用しようとすると、深刻な感情的トラウマが発生します。あなたは警告されました。
リンクに従ってファイルをダウンロードしてください。質問がOpenEdge Databaseで答えられることを願ってい ます
変数 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 .
終わり。