カーソルを作成する手順は次のとおりです。
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