Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Tipi di cursori di SQL Server:cosa sono i cursori statici in SQL Server | Esercitazione su SQL Server/Esercitazione su TSQL

I cursori sono gli oggetti che ci consentono di accedere ai dati riga per riga dal set di risultati.

Il cursore statico esegue la copia del set di risultati in memoria al momento della creazione del cursore e utilizza quel set di risultati temporaneo per restituire le righe . Se vengono apportate modifiche ai dati della tabella/e originale, come inserimento, aggiornamento o eliminazione. Il cursore statico non aggiorna il set di risultati memorizzato con tali modifiche a meno che non chiudiamo il cursore e riapriamo.

I cursori statici sono scorrevoli (primo, ultimo, precedente, successivo, relativo, assoluto)

Script per il cursore statico in SQL Server utilizzato anche nel video.

--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
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
 
 
 
Video dettagliato sul cursore statico in SQL Server.