logo


Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
mehmetzekikir  
#1 Gönderildi : 21 Kasım 2014 Cuma 01:31:39(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
Merhabalar

Cursor Satır satır dolaşmayı sağlar , örnek bir Cursor kodu ,

Bir üstündeki satırdan kendi değerini çıkarıp hesaplayan kod ,

Bir tablo oluşturalım


Kod:


CREATE TABLE [dbo].[Hesap](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[Deger] [int] NULL,
 CONSTRAINT [PK_Hesap] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]



Sonra Değerleri Girelim

Kod:

id	Deger
1	5
2	20
3	30
4	25
5	70
6	10
7	60




Sonra Cursor ı yazalım


Kod:

-- Değişkenler tanımlanır
DECLARE @id INT = 0
DECLARE @deger INT = 0
DECLARE @fark INT = 0

--Cursor tanımlanır, hangi sorguda çalışacağı belirlenir
DECLARE Hesapla CURSOR FOR
SELECT id,Deger FROM Hesap ORDER BY id

--Cursor açılır
OPEN Hesapla

-Her yeni değer atanır
FETCH NEXT FROM Hesapla INTO @id,@deger

WHILE @@FETCH_STATUS =0
	BEGIN
		
		SELECT @fark = deger - @fark from Hesap WHERE id=@id

		SELECT @id,@fark

		FETCH NEXT FROM Hesapla INTO @id,@deger
 
	END

	CLOSE Hesapla
--Bellekten silinir
DEALLOCATE Hesapla






Sonuç

Kod:


(No column name)	(No column name)
1	10

(No column name)	(No column name)
2	-5

(No column name)	(No column name)
3	35

(No column name)	(No column name)
4	-10

(No column name)	(No column name)
5	80

(No column name)	(No column name)
6	-70

(No column name)	(No column name)
7	130




Kolay Gelsin
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...
diaboli  
#2 Gönderildi : 1 Aralık 2014 Pazartesi 01:44:56(UTC)
diaboli

Sıralama: Member

Gruplar: Registered
Katılan: 22.11.2014(UTC)
Mesajlar: 19
Turkey

10 Kere Teşekkür Etti.
5 Mesajına Toplam 6 Kere Teşekkür Edildi.
Mehmet Hocam bunu sql üzerinde yapmamız bize ne kazandırır? Çok Kullanılma gereği duyulan bir şey midir bu Cursor'lar..While ile sıyrılamaz mıyız :) ?
mehmetzekikir  
#3 Gönderildi : 1 Aralık 2014 Pazartesi 11:10:29(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
Originally Posted by: diaboli Go to Quoted Post
Mehmet Hocam bunu sql üzerinde yapmamız bize ne kazandırır? Çok Kullanılma gereği duyulan bir şey midir bu Cursor'lar..While ile sıyrılamaz mıyız :) ?


Bu bize row bazlı işlem yapmamızı saglar, ne while bu işe yaramıyor :)


Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...
spyhonosis  
#4 Gönderildi : 29 Kasım 2016 Salı 15:31:11(UTC)
spyhonosis

Sıralama: Member

Gruplar: Registered
Katılan: 4.07.2016(UTC)
Mesajlar: 10
Turkey

1 Mesajına Toplam 1 Kere Teşekkür Edildi.
Originally Posted by: mehmetzekikir Go to Quoted Post
Originally Posted by: diaboli Go to Quoted Post
Mehmet Hocam bunu sql üzerinde yapmamız bize ne kazandırır? Çok Kullanılma gereği duyulan bir şey midir bu Cursor'lar..While ile sıyrılamaz mıyız :) ?


Bu bize row bazlı işlem yapmamızı saglar, ne while bu işe yaramıyor :)





Neden satır satır işlem yapmaya ihtiyaç duyalım? Cursor kullanırsak ne olur, kullanmazsak ne olur mesela? Bu konuya açıklık getirebilecek bir örnek gösterir misiniz? Her yerde cursor un satır satır iş yaptığı yazıyor, eyvallah da ee yani? :) Sonuçta cursor un kullanmadan da iş yapamazmıydık? Cursor ne kazandırıyor ki bize?


Bu konudaki kullanıcılar
Guest
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.