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...