Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Définir les étapes pour le curseur SQL Server - Tutoriel SQL Server / TSQL

Les curseurs sont des objets qui nous sont fournis dans SQL Server pour effectuer une opération ligne par ligne.

Voici les étapes pour écrire un curseur

1-Déclarer un curseur par en utilisant le nom du curseur avec une instruction Select
2- Ouvrez le curseur pour remplir avec la sortie de l'instruction Select
3- Récupérez les lignes pour les traiter une après l'autre
4- Fermez le curseur
5- Désaffecter le curseur

Nous rencontrons différentes situations dans lesquelles nous pouvons utiliser des curseurs. Vous trouverez ci-dessous quelques exemples dans lesquels nous pouvons utiliser des curseurs. toutes les tables d'une base de données
3--activer/désactiver tous les déclencheurs d'une base de données SQL Server
4--générer des scripts/faire une sauvegarde de toutes les bases de données sur SQL Server une après l'autre
5 --Tronquer/Supprimer toutes les tables d'une base de données SQL Server


Exemple de code :
Le code ci-dessous peut être utilisé pour tuer tous les processus d'une base de données. Nous ne pouvons pas renommer une base de données si un processus accède à la base de données. Pour renommer, nous devons tuer tous les processus avant de renommer la base de données dans SQL Server.

USE MASTERGODECLARE @DatabaseName AS VARCHAR(500)-->Fournissez le DataBaseName pour lequel vous voulez tout tuer process.SET @DatabaseName='TestDB'DECLARE @Spid INT--1 :Déclarer le curseur :DÉCLARE KillProcessCur CURSOR FOR SELECT spid FROM sys.sysprocesses WHERE DB_NAME(dbid) =@DatabaseName--2 : OPEN CursorOPEN KillProcessCur--3 :Fetch A recordFETCH Next FROM KillProcessCur INTO @Spid - Boucle dans les lignes une par uneWHILE @@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)) + 'tué avec succès' FETCH Next FROM KillProcessCur INTO @Spid END--4 :Fermez le curseurCLOSE KillProcessCur--5 :Libérez CurseurDEALLOCATE KillProcessCur