T-SQL Akış Kontrolleri
T-SQL Akış Kontrolleri Nedir? T-SQL de If - Else If - Else, While, Case Nasıl Kullanılır? T-SQL Akış Kontrolleri Örnekleri Nelerdir?
T-SQL Akış Kontrolleri
Tüm programlama dillerinde olduğu gibi T-SQL içerisinde de if, while vb. akış kontrolleri kullanılabilir.
If - Else If- Else Kullanımı
IF (şart veya şartlar)
BEGIN
T-SQL kodlar
END
ELSE IF (şart veya şartlar)
BEGIN
T-SQL kodlar
END
--------
ELSE
BEGIN
T-SQL kodları
END
Örnek:
DECLARE @sayi1 INT, @sayi2 INT, @sayi3 INT
SET @sayi1 = 10
SET @sayi2 = 20
SET @sayi3 = 12
IF (
@sayi1 > @sayi2
AND @sayi1 > @sayi3
)
BEGIN
SELECT ('Sayı1 en büyük')
END
ELSE IF (
@sayi2 > @sayi1
AND @sayi2 > @sayi3
)
BEGIN
SELECT ('Sayı2 büyük')
END
ELSE
SELECT ('Sayı3 büyük')
While Döngüsü
Bir kodun veya kod bloğunun koşul gerçekleştiği sürece tekrar çalıştırılmasını sağlar.
WHILE (şart veya şartlar)
BEGIN
Kodlar
END
Örnek: 50 ile 250 arasındaki tek sayıların toplamını bulan T-SQL ifadesini yazalım.
DECLARE @sayac INT, @toplam INT
SET @sayac = 51
SET @toplam = 0
WHILE (@sayac < 250)
BEGIN
SET @toplam = @toplam + @sayac
SET @sayac = @sayac + 2
END
SELECT @toplam
Case Yapısı
Case yapısı T-SQL ifadelerinde birden fazla koşul gerektiren işlemlerin kullanımı için kullanılır.
CASE
WHEN (şart veya şartlar)
THEN deger1
WHEN (Şart veya şartlar)
THEN deger2 ….
ELSE deger_n
END
NOT: Case ifadesi tek başına If gibi T-SQL de kullanılamaz. Select ve Update komutlarıyla beraber kullanılır.
OgrDersleri
Örnek: Derslerin ortalamasını durumunu(Geçti/Kaldı) ve harf notunu (0-54 = DD, 55-69 = CC, 70-84 = DD, 85-100 = AA) şeklinde listeleyen T-SQL kodunu yazalım.
SELECT dadi, vize, final, (vize * 0.4 + final * 0.6) AS ortalama,
CASE
WHEN (vize * 0.4 + final * 0.6) >= 55
THEN 'Geçti'
ELSE 'Kaldı'
END AS Durumu,
CASE
WHEN (vize * 0.4 + final * 0.6) > 0
AND (vize * 0.4 + final * 0.6) < 55
THEN 'DD'
WHEN (vize * 0.4 + final * 0.6) >= 55
AND (vize * 0.4 + final * 0.6) < 70
THEN 'CC'
WHEN (vize * 0.4 + final * 0.6) >= 70
AND (vize * 0.4 + final * 0.6) < 85
THEN 'BB'
WHEN (vize * 0.4 + final * 0.6) >= 85
AND (vize * 0.4 + final * 0.6) <= 100
THEN 'AA'
END AS HarfNotu
FROM OgrDersleri
Tepkiniz Nedir?