sql >> Database >  >> RDS >> Sqlserver

Typen SQL Server-cursor - Alleen doorsturen statische cursor | SQL Server-zelfstudie / TSQL-zelfstudie

Cursors zijn de objecten die ons in staat stellen om rij voor rij toegang te krijgen tot de gegevens uit de resultatenset.

Alleen vooruit Cursors laten niet achterwaarts scrollen toe. De enige scrolloptie die we hebben is FETCH NEXT.


Alleen doorsturen Statische cursors zijn niet gevoelig voor wijzigingen (bijwerken, verwijderen, invoegen) die zijn aangebracht in de oorspronkelijke gegevensbron nadat de cursor is gemaakt.

Script voor Forward_Only Static Cursor
--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



Bekijk de video voor Demo Hoe Forward Only Static Cursors werkt in SQL Server.



  1. een lijst imploderen voor gebruik in een python MySQLDB IN-clausule

  2. Datum in een URL dd/mm/jjjj

  3. Door de Oracle-grootte van rij-ophaalacties hoger in te stellen, wordt mijn app langzamer?

  4. Oracle WHILE LOOP Voorbeeld