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

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

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

Dynamiczne kursory można aktualizować. Dynamiczny kursor pobierze zmiany (wstaw, zaktualizuj lub usuń) przy każdym pobieraniu, gdy kursor jest otwarty, jeśli jakakolwiek modyfikacja nastąpiła w oryginalnych danych w tabeli/ach. Ten typ kursora jest pomocny, gdy chcemy wyodrębnić rekordy z oryginalnej tabeli/y, gdy kursor jest otwarty, a wciąż jesteśmy w trakcie modyfikacji danych lub wstawiania nowych rekordów i chcemy je uwzględnić w zestawie wyników kursora w celu wykonania operacji.

Kursory dynamiczne można przewijać (pierwszy, ostatni, poprzedni, następny, względny), ale bezwzględny opcja nie działa z dynamicznymi kursorami.

Skrypt dla dynamicznego kursora w SQL Server również użyty w filmie.


--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
 
Obejrzyj wideo dotyczące szczegółowej demonstracji dynamicznych kursorów 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. Schemat bazy danych, autoinkrementacja

  2. Problem z otwieraniem pliku MDF, ponieważ mówi błąd SQL 5171? - Post gościnny autorstwa Andre Williams

  3. Jak używać OBJECT_ID() na obiektach między bazami danych w SQL Server

  4. Konwertuj „datetime” na „datetimeoffset” w SQL Server (przykłady T-SQL)

  5. Operator XOR T-SQL