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

Types de curseur SQL Server - Curseur dynamique | Tutoriel SQL Server / Tutoriel TSQL

Les curseurs sont les objets qui nous permettent d'accéder aux données ligne par ligne du jeu de résultats.

Les curseurs dynamiques peuvent être mis à jour. Le curseur dynamique récupérera les modifications (insertion, mise à jour ou suppression) à chaque extraction pendant que le curseur est ouvert si une modification est apportée aux données d'origine dans la ou les tables. Ce type de curseur est utile lorsque nous voulons extraire les enregistrements de la ou des tables d'origine alors que le curseur est ouvert et que nous sommes toujours en train de modifier des données ou d'insérer de nouveaux enregistrements et que nous voulons les inclure dans le jeu de résultats du curseur pour effectuer l'opération.

Les curseurs dynamiques sont déroulants (First,Last,Prior,Next,Relative) mais absolus l'option ne fonctionne pas avec les curseurs dynamiques.

Script pour le curseur dynamique dans SQL Server également utilisé dans la vidéo.


--drop table dbo .CustomerCreate table dbo.Customer ( CustomerId Int Identity(1,1),CustomerName VARCHAR(100),StreetAddress VARCHAr(100),City VARCHAR(100),State CHAR(2))go--Insert couple of Records in Sample TableInsert dans dbo.CustomerSelect 'Aamir shahzad','Test Street Address','Charlotte','NC'Union Select 'M Raza','Test Street Address','Charlotte','NC'Select * from dbo.Customer-- Insérer un NOUVEAU RecordInsert dans dbo.CustomerSelect 'John Smith','Test Street Address','New York City','NY'--Delete RecordsDelete from dbo.CustomerWhere CustomerName in ('Aamir Shahzad','M Raza')-- Mettre à jour tout RecordUpdate dbo.Customerset CustomerName='NO NAME'--Cursor ScriptDeclare @CustomerID INTDeclare @CustomerNAme VARCHAR (100)DECLARE @StreetAddress VARCHAR(100)DECLARE @City VARCHAR(100)DECLARE @State CHAR(2)--DECLARE A CURSORDECLARE CUR CURSORDYNAMICFORSélectionner un clientI D, CustomerName, StreetAddress, City, State from dbo.Customer--OPEN CURSOROPEN CURPrint 'CURSOR IS OPEN'--FETCH NEXT RECORDFETCH NEXT FROM CUR INTO @CustomerID,@CustomerNAme,@StreetAddress,@City,@StateWHILE @@FETCH_STATUS=0BEGIN RAISERROR ('',0,1) WITH NOWAITWAITFOR DELAY '00:00:15'PRINT CONCAT(@CustomerID,' ',@CustomerNAme,' ',@StreetAddress,' ',@City,' ',@State) FETCH NEXT FROM CUR INTO @CustomerID,@CustomerNAme,@StreetAddress,@City,@StateENDCLOSE CURDEALLOCATE CUR
 
Veuillez regarder la vidéo pour une démonstration détaillée des curseurs dynamiques dans SQL Server.