Dynamiczne kursory można aktualizować. Dynamiczny kursor pobierze zmiany (wstaw, zaktualizuj lub usuń) przy każdym pobieraniu, gdy kursor jest otwarty, jeśli jakakolwiek modyfikacja nastąpiła w oryginalnych danych w tabeli/ach. Ten typ kursora jest pomocny, gdy chcemy wyodrębnić rekordy z oryginalnej tabeli/y, gdy kursor jest otwarty, a wciąż jesteśmy w trakcie modyfikacji danych lub wstawiania nowych rekordów i chcemy je uwzględnić w zestawie wyników kursora w celu wykonania operacji.
Kursory dynamiczne można przewijać (pierwszy, ostatni, poprzedni, następny, względny), ale bezwzględny opcja nie działa z dynamicznymi kursorami.
Skrypt dla dynamicznego kursora w SQL Server również użyty w filmie.
--drop table dbo.Customer
Create 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 Table
Insert into dbo.Customer
Select 'Aamir shahzad','Test Street Address','Charlotte','NC'
Union
Select 'M Raza','Test Street Address','Charlotte','NC'
Select * from dbo.Customer
--Insert NEW Record
Insert into dbo.Customer
Select 'John Smith','Test Street Address','New York City','NY'
--Delete Records
Delete from dbo.Customer
Where CustomerName in ('Aamir Shahzad','M Raza')
--Update All Record
Update dbo.Customer
set CustomerName='NO NAME'
--Cursor Script
Declare @CustomerID INT
Declare @CustomerNAme VARCHAR (100)
DECLARE @StreetAddress VARCHAR(100)
DECLARE @City VARCHAR(100)
DECLARE @State CHAR(2)
--DECLARE A CURSOR
DECLARE CUR CURSOR
DYNAMIC
FOR
Select CustomerID,CustomerName,StreetAddress,City,State from dbo.Customer
--OPEN CURSOR
OPEN CUR
Print 'CURSOR IS OPEN'
--FETCH NEXT RECORD
FETCH NEXT FROM CUR INTO @CustomerID,@CustomerNAme,@StreetAddress,@City,@State
WHILE @@FETCH_STATUS=0
BEGIN
RAISERROR ('',0,1) WITH NOWAIT
WAITFOR DELAY '00:00:15'
PRINT CONCAT(@CustomerID,' ',@CustomerNAme,' ',@StreetAddress,' ',@City,' ',@State)
FETCH NEXT FROM CUR INTO @CustomerID,@CustomerNAme,@StreetAddress,@City,@State
END
CLOSE CUR
DEALLOCATE CUR Obejrzyj wideo dotyczące szczegółowej demonstracji dynamicznych kursorów w programie SQL Server.