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

SQL Server Cursor Types - Dynamic Cursor | SQL Server Tutorial / TSQL Tutorial

Markører er de objekter, der giver os adgang til data række for række fra resultatsæt.

Dynamiske markører kan opdateres. Den dynamiske markør henter ændringerne (indsæt, opdater eller slet) på hver hentning, mens markøren er åben, hvis der er sket ændringer af originale data i tabeller. Denne type markør er nyttig, når vi ønsker at udtrække posterne fra originale tabeller, mens markøren er åben, og vi stadig er i gang med at ændre data eller indsætte nye poster og ønsker at inkludere dem i markørens resultatsæt for at udføre operationen.

Dynamiske markører kan rulles (Først, Sidste, Forud, Næste, Relativ), men absolut option virker ikke med dynamiske markører.

Script til dynamisk markør i SQL Server, der også bruges i videoen.


--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
 
Se venligst videoen for detaljeret demo af dynamiske markører i SQL Server.
  1. Sql*plus returnerer altid exit-kode 0?

  2. Sådan gendannes en SQL Server-database på en Mac ved hjælp af SQL Operations Studio

  3. Skal jeg virkelig bruge SET XACT_ABORT ON?

  4. Bedste type indeksering, når der er LIKE-klausul