SQLServer(T-SQL)のカーソル作成方法と使用方法

データベース,SQL データベース
データベース

このページでは、SQLServerでのT-SQLカーソルの作成方法と使用方法について解説します。

カーソルを用いることで、SQLでデータの各行を逐次処理することが可能です。

本記事では、カーソルの作成から使用、そしてサンプルコードを用いた実行結果を含めた解説を行います。

カーソルとは

カーソルとは、データベース内のレコードを一行ずつ処理するためのメカニズムです。

SQLServerのT-SQLでカーソルを使うことで、指定したSQLクエリ結果の各行を個別に操作することが可能です。

カーソルの用途

カーソルは、各レコードに対して逐次処理を行う必要がある場合に便利です。

例えば、データベース内の複数のレコードを一つずつ処理しなければならない状況に適しています。

カーソルの基本構文

ここではカーソルの基本的な構文について説明します。

カーソルは、DECLARE、OPEN、FETCH、CLOSE、DEALLOCATEのステートメントを使用して操作します。

カーソルの宣言

カーソルを使用するためには、まずカーソルを宣言します。

宣言する際には、FETCH NEXTなどのデータを取り出す方法を指定します。

DECLARE cursor_name CURSOR FOR
    SELECT column1, column2 FROM table_name;

カーソルのオープン

カーソルをオープンすることで、指定したクエリの結果セットをカーソルにロードします。

OPEN cursor_name;

データのフェッチ

FETCHステートメントを使って、カーソルの現在位置からデータを取り出します。

FETCH NEXT FROM cursor_name INTO @variable1, @variable2;

カーソルのクローズ

カーソルをクローズして、カーソルで使用していたリソースを解放します。

CLOSE cursor_name;

カーソルの解放

カーソルを解放することで、カーソルに関連するメモリリソースを削除します。

DEALLOCATE cursor_name;

カーソルを用いたサンプルコード

以下に、カーソルの作成から実行までのサンプルコードを示します。

このコードでは、従業員テーブルからデータを取得し、各従業員の名前を表示します。

DECLARE @EmployeeID INT, @EmployeeName NVARCHAR(50);

DECLARE employee_cursor CURSOR FOR
SELECT EmployeeID, EmployeeName
FROM Employees;

OPEN employee_cursor;

FETCH NEXT FROM employee_cursor INTO @EmployeeID, @EmployeeName;

WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT 'Employee ID: ' + CAST(@EmployeeID AS NVARCHAR) + ', Name: ' + @EmployeeName;
    FETCH NEXT FROM employee_cursor INTO @EmployeeID, @EmployeeName;
END;

CLOSE employee_cursor;
DEALLOCATE employee_cursor;

実行結果

サンプルコードを実行した際の結果は以下の通りです。

業員のIDと名前が一行ずつ表示されます。

Employee ID: 1, Name: 山田太郎
Employee ID: 2, Name: 佐藤花子
Employee ID: 3, Name: 鈴木一郎
...

まとめ

SQLServerにおけるカーソルの使用方法を解説しました。

カーソルを用いることで、レコードの逐次処理が可能になりますが、パフォーマンスに影響を与える可能性があるため、必要な場合のみ利用することが推奨されます。

この記事ではカーソルの基本構文や使用方法、サンプルコードと実行結果について詳しく解説しました。

タイトルとURLをコピーしました