カーソルを作成する手順は次のとおりです。
1-カーソルを宣言するSelectステートメントでカーソルの名前を使用する
2-カーソルを開いてSelectステートメントの出力を入力する
3-行をフェッチして1つずつ処理する
4-カーソルを閉じる
5-カーソルの割り当てを解除する
カーソルを使用できるさまざまな状況が発生します。以下は、カーソルを使用できるいくつかの例です
例:
1 ---SQLServerデータベースからすべての接続を強制終了します
2--CreatedByなどの新しい列をに追加しますデータベース内のすべてのテーブル
3--SQLServerデータベース内のすべてのトリガーを有効/無効にします
4--スクリプトを生成します/SQLServer上のすべてのデータベースのバックアップを1つずつ作成します
5 --SQLServerデータベースからすべてのテーブルを切り捨て/削除します
サンプルコード:
以下のコードを使用して、データベースへのすべてのプロセスを強制終了できます。いずれかのプロセスがデータベースにアクセスしている場合、データベースの名前を変更することはできません。名前を変更するには、SQLServerでデータベースの名前を変更する前にすべてのプロセスを強制終了する必要があります。
USE MASTER
GO
DECLARE @DatabaseName AS VARCHAR(500)
-->Provide the DataBaseName for which want to Kill all processes.
SET @DatabaseName='TestDB'
DECLARE @Spid INT
--1: Declare Cursor:
DECLARE KillProcessCur CURSOR FOR
SELECT spid
FROM sys.sysprocesses
WHERE DB_NAME(dbid) = @DatabaseName
--2: OPEN Cursor
OPEN KillProcessCur
--3: Fetch A record
FETCH Next FROM KillProcessCur INTO @Spid
--Loop Through the Rows one by one
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SQL VARCHAR(500)=NULL
SET @SQL='Kill ' + CAST(@Spid AS VARCHAR(5))
PRint @SQL
EXEC (@SQL)
PRINT 'ProcessID =' + CAST(@Spid AS VARCHAR(5))
+ ' killed successfull'
FETCH Next FROM KillProcessCur INTO @Spid
END
--4: Close the Cursor
CLOSE KillProcessCur
--5: Deallocate Cursor
DEALLOCATE KillProcessCur