SQL Cursor

Sql’de Cursor sayesinde verilere satır satır erişebiliriz. Eriştiğimiz veriler üzerinde istediğimiz değişiklikleri yapabirliz. Aslında bir çeşit for döngüsüne benzetebiliriz.

Northwind veritabanında, Products tablosunda ürünlerin miktarına göre stok durumunu ifade eden cursor yazacağız.


--Orjinal table'dan gelen değerleri yarattığımız geçici
--tabloya atacağız.
Create table #cursordeneme
(
 UrunIsmi varchar (50),
 Durum varchar(20)
)
--Her satır için çalışacak olan cursor sorgusunu yazdık.
Declare cr_stok cursor for
 select ProductName,UnitsInStock from Products

--Cursordan aldığımız verileri karşılaştırma için tanımladığımız
--değişkenlere ataceğız.
Declare @ProductName varchar(50), @UnitsInStock varchar (20)

--Cursor bağlantımızı açtık.
Open cr_stok

--Cursorun her satırda gezmesini ve değişkenlere atmasını sağladık.
fetch next from cr_stok INTO @ProductName,@UnitsInStock

--Herhangi bir değer gelirse Fetch_status 0 değerini alacak.
--ve göngüye girecek.
while @@FETCH_STATUS=0

 Begin
 Declare @durum varchar(20)
 if (@UnitsInStock=0)
 begin
 set @durum='Stokta Yok'
 end
 else if(@UnitsInStock<20)
 begin
 set @durum='Stokta Azaldı'
 end
 else if (@UnitsInStock>20)
 begin
 set @durum='Stokta Var'
 end
--Gelen değerleri yarattığımız geçici tabloya atıyoruz
INSERT into #cursordeneme values (@ProductName,@durum)

--Satırdan değeri aldıktan sonra, diğer satırlar için tekrar
--döngüyü tekrar ediyoruz.
fetch next from cr_stok INTO @ProductName,@UnitsInStock

end
--cursor ile olan bağlantımızı kapatyoruz ve cursorun sonuç kümesini boşaltıyoruz.
CLOSE cr_stok
--Cursoru bellekten siler ve erişimi engelleriz.
DEALLOCATE cr_stok

Capture

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir