Ecco i passaggi come si scrive un cursore
1-Dichiara un cursore di utilizzando il nome del cursore con un'istruzione Select
2- Apri il cursore per popolare con l'output dell'istruzione Select
3- Recupera le righe per elaborarle una dopo una
4- Chiudi il cursore
5- De-allocare il cursore
Ci troviamo di fronte a diverse situazioni in cui possiamo usare i cursori. Di seguito sono riportati alcuni esempi in cui è possibile utilizzare i cursori
Esempi:
1-- Interrompi tutte le connessioni da un database di SQL Server
2-- Aggiungi una nuova colonna come CreatedBy a tutte le tabelle in un database
3--Abilita/Disabilita tutti i trigger in un database di SQL Server
4--Genera script/Effettua il backup di tutti i database su SQL Server uno dopo l'altro
5 --Tronca/Elimina tutte le tabelle da un database di SQL Server
Codice di esempio:
Il codice seguente può essere utilizzato per terminare tutti i processi in un database. Non possiamo rinominare un database se qualsiasi processo sta accedendo al database. Per rinominare dobbiamo uccidere tutti i processi prima di rinominare il database 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