Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Типове курсори на SQL Server - Динамичен курсор само за препращане | Урок за SQL Server / Урок за TSQL

Курсори са обектите, които ни позволяват достъп до данните ред по ред от набора от резултати.

Само напред курсорите не позволяват превъртане назад. Единствената опция за превъртане, която имаме, е FETCH NEXT.

Само препращане Статичните курсори са чувствителни към всякакви промени (актуализация, изтриване, вмъкване), направени в оригиналния източник на данни. Ако промените бъдат направени, те ще бъдат извлечени при следващо извличане.


Скрипт за динамичен курсор само за препращане


--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 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



Гледайте видеоклипа за подробности за динамичния курсор само за препращане в SQL Server


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server - транзакциите се връщат обратно при грешка?

  2. Функция COALESCE в TSQL

  3. ROLLBACK TRUNCATE в SQL Server

  4. Какво е СТАТИСТИЧЕСКО ВРЕМЕ в SQL Server?

  5. Изберете размер на базата данни на SQL Server