Hier sind die Schritte, wie Sie einen Cursor schreiben
1- Deklarieren Sie einen Cursor durch Verwenden des Namens des Cursors mit einer Select-Anweisung
2- Öffnen Sie den Cursor, um ihn mit der Ausgabe der Select-Anweisung zu füllen
3- Rufen Sie die Zeilen ab, um sie nacheinander zu verarbeiten
4- Schließen Sie den Cursor
5- Cursor freigeben
Wir begegnen verschiedenen Situationen, in denen wir Cursor verwenden können. Unten sind einige Beispiele, in denen wir Cursor verwenden können
Beispiele:
1-- Beenden Sie alle Verbindungen von einer SQL Server-Datenbank
2-- Fügen Sie eine neue Spalte wie z. B. CreatedBy hinzu alle Tabellen in einer Datenbank
3--Aktivieren/Deaktivieren aller Trigger in einer SQL Server-Datenbank
4--Generieren von Skripts/Erstellen einer Sicherung aller Datenbanken auf SQL Server nacheinander
5 --Truncate/Delete all the tables from a SQL Server Database
Beispielcode:
Der folgende Code kann verwendet werden, um alle Prozesse einer Datenbank zu beenden. Wir können eine Datenbank nicht umbenennen, wenn irgendein Prozess auf die Datenbank zugreift. Zum Umbenennen müssen wir alle Prozesse beenden, bevor wir die Datenbank in SQL Server umbenennen.
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