04.03.2010 00:09:17
T-SQL'de Akış Kontrolleri(If-Else,Case,While)
T-SQL'de kontroller BEGIN deyimi ile başlayıp END deyimi ile biten kod blokları arasında yazılır.
IF-ELSE Karar Yapısı
Bizim belirttiğimiz şartları kontrol eder. Bu şartların doğru olması halinde farklı işlemler, yanlış olması halinde farklı işlemler yapılmasını sağlar.
Genel kullanımı şu şekildedir:
IF(Sart1)
BEGIN
İslemleriniz
END
ELSE IF(Sart2)
BEGIN
İslemleriniz
END
ELSE
BEGIN
İslemleriniz
END
Şimdi bir örnekle bunu açıklayalım:

Üstteki resimdeki örnekteki senaryoyu sizlere açıklayayım: Bir ürün tablomuz var ve bir de fiyat kolonumuz var. Öncelikle en yüksek fiyatlı ürünü bulup bir değişkene atayacağız. Daha sonra bu değişkeni diğer bir sorgunun koşul ifadesi olarak kullanacağız ve diğer sorguda da en pahalı ürünün markasını başka bir değişkene atayacağız. Sonra IF ve ELSE deyimlerini kontrol ederek ekrana markanın adını yazdıracağız.
Bu örnekte markaID’si 2 olarak bize dönecektir. Birinci if yapısında şartımız markaID’nin 1 olması. Kontrol ediyor, bakıyor elimizdeki sayı 1 değil. Bir alttaki if e giriyor. Bakıyor elimizdeki sayı 2 ve içine giriyor, ekrana yazıyı yazdırıyor. Kısacası koşulun sağlandığı bloklar arasındaki işlemleri yapmaya yarıyor.
Case Deyimi
Case yapısı, kontrol edilmesi gereken durum çok olduğundan kullanıla akış kontrol deyimidir.
Genel kullanımı şu şekildedir:
CASE
WHEN şart THEN değer
END
Şu şekilde de kullanılabilir:
SELECT sutunAdi=case ifadesi FROM tabloAdi
WHERE sutunAdi=case ifadesi ORDER BY case ifadesi
Örnek:

Bu örneğimizde de MarkaID değerine göre işlemler yaptık. Sizinde bildiğiniz gibi tablomuzda aslında CaseDurumu adında bir kolon yok. Fakat ben MarkaID değerine göre yaptığım işlemler sonucunu böyle bir kolonda gösteriyorum. Eğer sorguya ve sonuca bakarsanız markanın değeri 1 olduğunda Philips, 2 olduğunda Nokia yazdığını göreceksiniz.If deyimi ile aynı görevi görür aslında, fakat daha az kod yazılır.
While Döngüsü
Döngülerin amacı bir işlemi istediğimiz kadar tekrar etmektir. Döngüler sayesinde tekrar tekrar aynı işlemleri yapmamıza gerek kalmaz.
Genel kullanımı şu şekildedir:
WHILE şart
BEGIN
Tekrarlanan kodlar
END
Döngüleri kullanırken bir şartımız vardır. Eğer bu şartı döngü içerisinde kontrol etmezsek, sonsuz döngüye girer ve döngü içerisinden çıkamaz. Örnek:

Bu örnekte sayacın 5 den küçük olduğu sürece döngünün dönmesini istiyorum. Ve her döngüye girişinde sayacı 1 artırıyorum ki sonsuz döngüsü olmasın. 1 arta arta sayaç en sonunda beş oluyor. En başa While deyiminin olduğu yere geliyor, bakıyor sayaç 5’den küçük değil ve döngüye girmeden çıkıyor.
Bir sonraki SQL makalesinde görüşmek üzere...