ホームページ > データベース > mysql チュートリアル > カーソルを使用して SQL Server レコード セットを反復するにはどうすればよいですか?

カーソルを使用して SQL Server レコード セットを反復するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-02 20:34:39
オリジナル
366 人が閲覧しました

How Can I Iterate Through SQL Server Record Sets Using Cursors?

SQL Server のレコード セットのループ

データ操作の領域では、特定の処理を実行するためにレコード セットを反復処理する必要があることがよくあります。各レコードに対する操作。 SQL Server のコンテキストでは、select ステートメントからのレコードのループは、T-SQL とカーソルを使用して実行できます。

レコードの反復にカーソルを使用する

カーソルは、クエリの結果を移動および操作するためのメカニズムを提供します。カーソルを使用してレコード セット内のレコードをループするには、次の手順を実行できます。

  1. カーソルを宣言します。 DECLARE CURSOR ステートメントを使用して、特定の名前を持つカーソルを宣言します。
  2. カーソルを初期化します: を使用して結果が反復されるクエリを指定します。 DECLARE CURSOR ステートメントの FOR 句。
  3. カーソルを開きます。 OPEN ステートメントを使用して、カーソルとレコード セット間の接続を確立します。
  4. 最初のレコード: FETCH ステートメントを使用して、最初のレコードを
  5. レコードを処理します: フェッチしたレコードに対して必要なアクションを実行します。
  6. さらにレコードがある間ループします: WHILE ループを実行します@@FETCH_STATUS = 0 という条件を使用して、さらに処理するレコードがあるかどうかを確認します。存在する場合は、再度 FETCH ステートメントを使用して、次のレコードを同じ変数にフェッチします。
  7. カーソルを閉じて割り当てを解除します。 すべてのレコードが処理されたら、CLOSE でカーソルを閉じます。

例実装

テーブルから上位 1000 レコードを取得する select ステートメントがあるシナリオを考えます。

select top 1000 * from dbo.table
where StatusID = 7
ログイン後にコピー

カーソルを使用してこれらのレコードをループするには、次の T -SQL コードを使用できます:

DECLARE @MyCursor CURSOR;
DECLARE @MyField YourFieldDataType;
BEGIN
    SET @MyCursor = CURSOR FOR
    select top 1000 YourField from dbo.table
        where StatusID = 7      

    OPEN @MyCursor 
    FETCH NEXT FROM @MyCursor 
    INTO @MyField

    WHILE @@FETCH_STATUS = 0
    BEGIN
      /*
         YOUR ALGORITHM GOES HERE   
      */
      FETCH NEXT FROM @MyCursor 
      INTO @MyField 
    END; 

    CLOSE @MyCursor ;
    DEALLOCATE @MyCursor;
END;
ログイン後にコピー

置換YourFieldDataType を反復処理される列の適切なデータ型に指定し、/ YOUR ALGORITHM GOES HERE / セクション内に目的のアルゴリズムを含めて、各レコードに対して特定の操作を実行します。

以上がカーソルを使用して SQL Server レコード セットを反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート