Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Typy kursorów programu SQL Server — dynamiczny kursor tylko do przodu | Samouczek SQL Server / Samouczek TSQL

Kursory są obiektami, które umożliwiają nam dostęp do danych wiersz po wierszu z zestawu wyników.

Kursory tylko do przodu nie pozwalają na przewijanie do tyłu. Jedyną dostępną opcją przewijania jest FETCH NEXT.

Tylko do przodu Statyczne Kursory są wrażliwe na wszelkie zmiany (aktualizacja, usuwanie, wstawianie) dokonywane w oryginalnym źródle danych. Jeśli zmiany zostaną wprowadzone, zostaną one wyodrębnione podczas następnego pobierania.


Skrypt dla dynamicznego 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 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



Obejrzyj wideo dotyczące szczegółów dynamicznego kursora tylko do przodu w programie 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. Jak znaleźć znaki Unicode/nie-ASCII w polu NTEXT w tabeli programu SQL Server 2005?

  2. Oracle:czy istnieje narzędzie do śledzenia zapytań, takie jak Profiler dla serwera sql?

  3. Jak utworzyć tabelę z ograniczeniem klucza obcego w SQL Server — samouczek SQL Server / TSQL, część 66

  4. Jak naprawić „Powiązana funkcja partycji generuje więcej partycji niż jest grup plików wymienionych w schemacie” Msg 7707 w SQL Server

  5. Jak zapobiec automatycznemu zamykaniu programu SQL Server LocalDB?