明細書の選択中

while select ステートメントは、データの処理に使用されます。 select ステートメントの最も広く使用されている形式です。 while select ステートメントは、特定の基準を満たす多くのレコードをループし、各レコードでステートメントを実行することができます。 while select ステートメントの構文は、select ステートメントの構文に似ていますが、このステートメントはselect ではなく while select により処理されます。

  • 通常、データ操作のために while select ステートメントを使用する場合、トランザクション内でデータ整合性を確保するために使用します。

  • while select ステートメントの結果はテーブル バッファ変数に返されます。

  • 選択ステートメントのフィールド リストを使用すると、これらのフィールドでは、テーブル変数が使用されます。

  • sumcount などの集計関数を使用すると、結果は sum または count を実行するフィールドに返されます。 整数フィールドおよび実数フィールのみを計算、平均、または合計することができます。

  • select ステートメント自体は、ループのステートメントの最初の繰り返しの直前に 1 回だけ実行されます。

  • while select ステートメントに追加されたプール式 (例えば、iCounter < 1) は 1 度だけテストされます。 この動作は、C++ や C# などの言語の while 文の動作とは異なります。 たとえば、次のループは、複数回繰り返します。

    int iCounter = 0;
    BankAccountTable xrecBAT;
    
    while select * from xrecBAT
        where iCounter < 1
    {
        iCounter++;
        info(strFmt("%1 , %2", iCounter, xrecBAT.AccountID));
    }
    

次の例では、アカウント番号が指定された範囲内にある CustTable テーブルのすべての顧客の AccountNumSalesGroup の値を出力します。

CustTable custTable;

while select custTable
    order by custTable.AccountNum
    where  custTable.AccountNum >= '4010' && custTable.AccountNum <= '4100'
{
    info(strFmt("%1 , %2", custTable.AccountNum, custTable.SalesGroup));
}