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