Zde jsou kroky, jak zapsat kurzor
1-Declare A Cursor by pomocí názvu kurzoru s příkazem Select
2- Otevřete kurzor pro naplnění výstupem příkazu Select
3- Načtěte řádky a zpracujte je jeden po druhém
4- Zavřete kurzor
5- De-allocate Cursor
Setkáváme se s různými situacemi, ve kterých můžeme použít kurzory. Níže je několik příkladů, ve kterých můžeme použít kurzory
Příklady:
1-- Zrušte všechna připojení z databáze SQL Server
2-- Přidejte nové sloupce, jako je CreatedBy do všechny tabulky v databázi
3--Povolení/Deaktivace všech spouštěčů v databázi SQL Server
4--Generování skriptů/Zálohování celé databáze na SQL Server jeden po druhém
5 --Zkrátit/odstranit všechny tabulky z databáze SQL Server
Příklad kódu:
Níže uvedený kód lze použít k ukončení všech procesů v databázi. Nemůžeme přejmenovat databázi, pokud k databázi přistupuje jakýkoli proces. Chcete-li přejmenovat, musíme před přejmenováním databáze v SQL Serveru zabít všechny procesy.
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