ホームページ >データベース >mysql チュートリアル >カーソルを使用して SQL Server レコードをループする方法

カーソルを使用して SQL Server レコードをループする方法

DDD
DDDオリジナル
2024-12-26 13:06:18975ブラウズ

How to Loop Through SQL Server Records Using Cursors?

SQL Server のレコードのループ

ループ クエリは、データベース テーブルからデータを取得して処理する場合によく使用されます。このガイドでは、T-SQL と SQL Server のカーソルを使用してレコードのセットをループする方法を説明します。

カーソルの作成

セットをループするにはレコードの場合、最初にカーソルを作成する必要があります。カーソルは、クエリによって返された行を反復処理するために使用できる一時的なポインタです。次のコードは、@MyCursor というカーソルを定義します。

DECLARE @MyCursor CURSOR;

クエリの設定

次に、必要なデータを取得するクエリを設定する必要があります。ループスルーしたい。この例では、StatusID が 7 に等しいテーブルから上位 1000 件のレコードを選択するクエリがあります。このクエリを使用してカーソルを設定できます:

SET @MyCursor = CURSOR FOR
select top 1000 YourField from dbo.table
where StatusID = 7

レコードのフェッチと処理

カーソルが作成され、データが設定されると、レコードを行ごとにフェッチしてローカル変数に入れることができます。 @MyField:

OPEN @MyCursor
FETCH NEXT FROM @MyCursor INTO @MyField

FETCH NEXT ステートメントは、カーソルから次の行を取得し、その値を指定された変数に割り当てます。

ループ条件

ループを作成するには、レコードのフェッチをいつ停止するかを決定する条件が必要です。この場合、カーソルのステータスを返す @@FETCH_STATUS システム変数を使用できます。

WHILE @@FETCH_STATUS = 0
BEGIN

@@FETCH_STATUS の値が 0 である限り、ループは実行を続けます。すべてのレコードがフェッチされると、@@FETCH_STATUS が -1 に設定され、ループが終了します。

処理ロジック

ループ内で、フェッチされたデータに必要なロジックを適用します。たとえば、YourField の値をコンソールに出力したり、別のテーブルの関連レコードを更新したりできます。

/*
  YOUR ALGORITHM GOES HERE
*/

カーソルを閉じる

すべてのレコードが終了した後処理が完了したら、カーソルを閉じて割り当てを解除し、システム リソースを解放する必要があります。

CLOSE @MyCursor;
DEALLOCATE @MyCursor;

次のようにします。手順に従って、SQL Server の一連のレコードを簡単にループし、必要な操作を実行できます。

以上がカーソルを使用して SQL Server レコードをループする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。