T-SQL’de Karar İfadeleri ve Döngü Kullanımı

Gökhan YAVAŞ
gokhanyavas
Published in
2 min readApr 12, 2017

T-SQL komutlarını bir koşula dayandırarak çalıştırmak istediğimizde karar ifadelerini ve döngüleri kullanırız. Şimdi bunları inceleyelim:

IF-ELSE Yapısı

IF-Else yapısı komutların belli bir yapıya göre çalışmasını sağlar. İşlenecek komut satırı birden fazla ise BEGIN — END yapısı kullanılır.

Örnek: Ortalama fiyatın durumunu kontrol ediyoruz.

DECLARE @ORTALAMAFİYAT DECIMAL(15,2)SELECT @ORTALAMAFİYAT=AVG(UNİTPRİCE) FROM PRODUCTS
PRINT 'ORTALAMA BİRİM FİYATI = ' + CAST(@ORTALAMAFİYAT AS VARCHAR(5))
IF(@ORTALAMAFİYAT<30)
BEGIN
PRINT 'DÜŞÜK FİYAT'
END
ELSE
BEGIN
PRINT 'YÜKSEK FİYAT'
END
CASE YapısıSQL sorgusu içinde koşullu sorgulama yapılmasına imkan tanımaktadır ve IF-THEN-ELSE işlevselliğine sahiptir.CASE WHEN koşul1 THEN sonuc
WHEN koşul2 THEN sonuc
...
ELSE sonuc
END
Örnek:SELECT FirstName,HireDate, 'Durum' =
CASE
WHEN HireDate BETWEEN '1994-01-01' AND '1995-01-01' THEN 'Yeni Çalışan'
WHEN HireDate BETWEEN '1993-01-01' AND '1994-01-01' THEN 'Eski Çalışan'
WHEN HireDate BETWEEN '1992-01-01' AND '1993-01-01' THEN 'Çok Eski Çalışan'
END
FROM Employees;

While Döngüsü

Şart sağlanana kadar işlemin devam etmesidir.Söz dizimi:WHILE şart
BEGIN
Tekrarlanması istenilen kod bloğu
END
Örnek: 10'dan geriye doğru yazdıran kodDECLARE @Sayac TINYINTSET @Sayac=10
WHILE (@Sayac>0)
BEGIN
PRINT @Sayac
SELECT @Sayac=@Sayac-1
END
Break Komutu:Şart yerine getirildiğinde döngüden çıkmak için kullanılır.DECLARE @Sayac INTSET @Sayac=0
WHILE (@Sayac<10) BEGIN SELECT @Sayac=@Sayac+1 IF(@Sayac*@Sayac>10)
BEGIN
PRINT 'Sayı 10 değerini geçti.'
BREAK --döngüden cık
END
END
Continue Komutu:Bazı durumlar için bazen işlem yapmadan döngüyü devam ettirmek isteriz. Bu gibi durumlarda da CONTINUE deyimini kullanırız. CONTINUE kendisinden sonraki gelen ifadeyi yok sayar.
Örnek: 1 - 5 arasında ekrana yazdırır fakat 2 sayısına geldiğinde yazıyı yazdırmadan geçer.
DECLARE @Sayi int=0
WHILE (@Sayi<=4)
BEGIN
SET @Sayi=@Sayi+1
IF(@Sayi=2)
CONTINUE
PRINT @Sayi
END
PRINT 'Döngüden Çıkıldı..'

--

--