Ето стъпките как да напишете курсор
1-Декларирайте курсор от използване на името на курсора с оператор Select
2- Отворете курсора, за да попълните изхода на оператор Select
3- Извлечете редовете, за да ги обработите един след един
4- Затворете курсора
5- Де-разпределяне на курсора
Срещаме се в различни ситуации, в които можем да използваме курсори. По-долу са дадени примери, в които можем да използваме курсори
Примери:
1-- Прекъснете всички връзки от база данни на SQL Server
2-- Добавете нови колони като CreatedBy към всички таблици в база данни
3--Разрешаване/Деактивиране на всички тригери в база данни на SQL Server
4--Генериране на скриптове/Вземане на резервно копие на цялата база данни на SQL Server един след един
5 --Отрежете/Изтрийте всички таблици от база данни на SQL Server
Примерен код:
Кодът по-долу може да се използва за унищожаване на всички процеси в база данни. Не можем да преименуваме база данни, ако някой процес осъществява достъп до базата данни. За да преименуваме, трябва да убием всички процеси, преди да преименуваме базата данни в 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