Hier zijn de stappen hoe u een cursor schrijft
1-Declare A Cursor door de naam van de cursor gebruiken met een Select-instructie
2- Cursor openen om de uitvoer van de Select-instructie te vullen
3- Haal de rijen op om ze een voor een te verwerken
4- Sluit de cursor
5- Cursor de-toewijzing opheffen
We komen verschillende situaties tegen waarin we cursors kunnen gebruiken. Hieronder staan enkele voorbeelden waarin we cursors kunnen gebruiken
Voorbeelden:
1-- Alle verbindingen van een SQL Server-database beëindigen
2-- Nieuwe kolommen, zoals CreatedBy, toevoegen aan alle tabellen in een database
3--Alle triggers in een SQL Server-database inschakelen/uitschakelen
4--Scripts genereren/Een voor één een back-up maken van alle databases op SQL Server
5 --Truncate/Delete alle tabellen uit een SQL Server-database
Voorbeeldcode:
De onderstaande code kan worden gebruikt om alle processen naar een database te beëindigen. We kunnen de naam van een database niet wijzigen als een proces toegang heeft tot de database. Om te hernoemen moeten we alle processen doden voordat we de database hernoemen in SQL Server.
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