次の方法で共有


選択文処理中

コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engage コミュニティに参加し、最新のディスカッションに参加するには、「 Finance and Operations Viva Engage Community へのアクセスを要求する 」フォームに入力し、参加するコミュニティを選択します。

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

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

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

  • 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));
}