Sadece satır değeri değişsin

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Sadece satır değeri değişsin

Mesaj gönderen sabanakman »

Herkese iyi çalışmalar. Kayıtları satır satır gezerken sadece o satırdaki bir değeri değiştirmek istiyorum ve aşağıdaki kodu kullanıyorum (id alanım primary indekse sahip).

Kod: Tümünü seç

declare @id int,@Deger char(10)
declare cur cursor for select Ref, Deger from test
open cur
fetch next from cur into @id, @Deger
while (@@FETCH_STATUS = 0) begin
  update test set Deger=cast(@id as nvarchar(10)) where id=@id
  fetch next from cur into @id, @Deger
end
close cur
deallocate cur
Dikkat edilirse
update test set Deger=cast(@id as nvarchar(10)) where id=@id
gibi bir sorgu ile yapmaktayım. Bu da tüm veri tablosundaki kayıtları her satır için işleme alacağından sistemi çok fazla yoracaktır. Bunun yerine sadece üzerinde bulunulan satıra özel değer yazma işlemi yapabileceğimiz bir yöntem var mıdır?

Not:Örnek basit olması açısından bu şekilde yazıldı. Verilen örneğin çözümü

update test set Deger=cast(id as nvarchar(10))

olacaktır fakat elimde bulunan hesap, kitap ve veri yoğunluğu nedeni ile böyle bir ihtiyacım belirdi. Bu ihtiyaç doğrultusunda bu basit örneği geliştirdim. Buna istediğim teknikte bir çözüm var mıdır acaba?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Sadece satır değeri değişsin

Mesaj gönderen aslangeri »

s.a.
sorunu bi gözden geçir demek istiyorum. Ne istediğini tam anlayamadım...
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Sadece satır değeri değişsin

Mesaj gönderen sabanakman »

Ne sorduğumu bildiğimden olsa gerek bana sıkıntı yokmuş gibi geldi :oops:.
sabanakman yazdı:declare @id int,@Deger char(10)
declare cur cursor for select Ref, Deger from test
open cur
fetch next from cur into @id, @Deger
while (@@FETCH_STATUS = 0) begin
update test set Deger=cast(@id as nvarchar(10)) where id=@id
fetch next from cur into @id, @Deger
end
close cur
deallocate cur
Madem declare cur cursor... ile tanım yaptım o zaman cur ile o anda bulunulan satırdaki değişikliği update test set Deger=cast(@id as nvarchar(10)) where id=@id ile yapmak çok abes oluyor. Direk cur kullanarak üzerinde bulunulan satırda değer değişikliği yapmak mümkün müdür?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Re: Sadece satır değeri değişsin

Mesaj gönderen bgoktas »

Merhabalar,

Bildiğim kadarıyla , kürsörü açtığın zaman dönen sonuç kümesi belleğe alınıyor ve fetch işlemi ile kürsörü belleğin o alanına yönlendirip okuma yapıyorsun. Yani aslında gerçek veri üzerinde hareket etmiyorsunki direk üzerinde bulunduğun satırı değiştirebilesiniz. Eğer id alanı indeksli bir alansa bu alana uyan kayıdın değiştirilmesi sqlserver için çok fazla zaman alıcı olmasa gerek

Kolay Gelsin..
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Sadece satır değeri değişsin

Mesaj gönderen sabanakman »

O zaman ben oynamıyorum :twisted: . Henüz gerçekten çok kayıtla teste geçmedim ama sorun çıkmayacağını ben de umuyorum. Aklıma takıldığı için sordum bu soruyu da. Direk satır kaydına müdahele olsaydı ama tadından yenmezdi falla :)
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla