Mssql cursor kullanımı

Codx

Katılımcı Üye
30 Tem 2017
309
1

Merhabalar, iyi forumlar herkese.

İşleyeceğimiz konular;

- Cursor nedir? & Ne gibi kolaylıklar sağlar?
- Nasıl kullanılır?



CURSOR NEDİR? & NE GİBİ KOLAYLIKLAR SAĞLAR?

Cursor, kendisine verdiğimiz sorgu sonuçları arasında teker teker dönmemizi ve bu verileri pratik bir şekilde işleyebilmemize olanak sağlar.

NASIL KULLANILIR?

Öncelikle MSSQL üzerinde bir cursor gövdesi yazalım ve analiz edelim. Ben ApexSQL eklentisini kullandığım için cursor yazıp enter'a bastığım zaman bana temel gövdeyi oluşturmakta.



Çalışma mantığı;


Şimdi adım adım yazarak analiz etmeye başlayalım.

Ben örnek database olarak bu sefer pubs database kullancağım.

Bahsettiğim database'e buradan ulaşabilirsiniz.

Bu database üzerinde author isimli bir tablo vardır.



Bizim görevimiz müşteriye verileri raporlarken telefon numaralarını maskelemek olsun. Raporlama konusu müşteri için en önemli kısımdır. Bizim arkaplanda ne çalıştırdığımız yada ne kadar mükemmel bir yapı kurduğumuza değil, ne kadar hızlı sonuç döndürdüğümüze ve aldıkları raporlara bakarlar.

Eğer ApexSQL eklentisine sahipseniz cursor yazıp ikinci seçeneğe tıklarsanız. Size bir cursor şablonu oluşturur. Siz sadece içini doldurursunuz. Başlangıç için en iyisi herşeyi elle yazmak olacaktır. Gün içinde bu tarz şeyleri sık sık kullanıyorsanız eğer öğrendikten sonra sizin için içerisini doldurmak kafi gelecektir.



Önce kullanılacak parametreler tanımlanmalı ve hangi verileri işleyeceğini belirtmek için cursor'u tanımlandıktan sonra devamında bir SELECT sorgusu gelmesi gerekmektedir.

Ardından select ettiğimiz alana eşleyeceğimiz bir parametre gelmelidir.

Şöyle bir senaryomuz olsun, biz müşteriye rapor çıkarttıracağız içerideki verilerin görüntüsünden rahatsız oldu. Bize ulaştı ve dedi ki ben telefon numaraları arasında boşluk olsun istemiyorum 555 666-777 şeklinde değil 555-666-777 şeklinde görünsün istiyorum.

Bu durumda cursor kullanacağız içerideki bütün verileri REPLACE fonksiyonu ile güncelleyeceğiz.

Kodlarımıza geçelim.



TEST EDELİM

Önce tabloyu bulk insert yaparak kopyalıyorum sonra cursor'umu çalıştıracağım en son iki tabloyu yan yana listeleyip farkı görelim.
Kod:
SELECT * into authorsKopya FROM dbo.authors
Kopyayı bu şekilde alıyoruz. Şimdi cursorumuzu çalıştıralım.



Cursor sonucumuz bu şekilde.

KARŞILAŞTIRALIM



Eski hali ve yeni halini karşılaştırdığımız zaman bütün verilerin, güncellenmesini sağlamış olduğumuzu görebiliyoruz.

Okuduğunuz için teşekkür eder, iyi forumlar dilerim.

 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.