Kursory tylko do przodu nie pozwalają na przewijanie do tyłu. Jedyną dostępną opcją przewijania jest FETCH NEXT.
Tylko do przodu Statyczne Kursory nie są wrażliwe na jakiekolwiek zmiany (aktualizacja, usuwanie, wstawianie) wprowadzone do oryginalnego źródła danych po utworzeniu kursora.
Skrypt dla statycznego kursora tylko do przodu
--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
Forward_Only Static
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 demonstracyjne Jak działają tylko statyczne kursory do przodu w SQL Server.