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
