T-SQL’de IF…ELSE bir kontrol yapısıdır (control flow statement) ve belirli bir koşula göre farklı kod bloklarının çalıştırılmasını sağlar.
IF…ELSE yapısı, belirtilen mantıksal koşulun doğru (TRUE) veya yanlış (FALSE) olmasına bağlı olarak farklı T-SQL kod bloklarının çalıştırılmasını sağlar.
Temel Komut:
IF koşul
BEGIN
-- Koşul doğruysa çalışacak kodlar
END
ELSE
BEGIN
-- Koşul yanlışsa çalışacak kodlar
END
Bir örnek üzerinden yukarıdaki kavramın ne olduğunu açıklayalım.
DECLARE @Sayı INT = 100;
IF @Sayı > 50
BEGIN
PRINT 'Sayı 50''den büyüktür.';
END
ELSE
BEGIN
PRINT 'Sayı 50''den küçük veya eşittir.';
END
Tek satırlık ifadeler çalıştırılacaksa Begin end ifadesinin kullanılmasına gerek yoktur. Komutu aşağıdaki gibi kısalta biliriz. Ama birden fazla satır kullanacaksak begin-end ifadesinin kullanılması gerekmektedir. Diğer kodlama dillerinde süslü paranteze karşılık gelmektedir.
DECLARE @Sayı INT = 100;
IF @Sayı > 50
PRINT 'Sayı 50''den büyüktür.';
ELSE
PRINT 'Sayı 50''den küçük veya eşittir.';
Yukarıdaki sorgumuzu daha kompleks bir hale getirirsek begin end ifadesinin kullanıldığını görmekteyiz.

Eğer sorgumuzda birden fazla şart ifademiz varsa if-else-if-else ifadesi kullanabiliriz. Birden fazla çalıştırılacak komut vars begin end ifadesi kullanılır. Tek satırlık kod dönecekse if sonucumuzda begin end ifadesinin yazılmasına gerek yoktur. Begin end komutlarına scop denilmektedir.
DECLARE @puan INT = 75;
IF @puan >= 90
BEGIN
PRINT ' A aldınız';
END
ELSE IF @puan >= 80
BEGIN
PRINT 'B aldınız';
END
ELSE IF @puan >= 70
BEGIN
PRINT 'C aldınız';
END
ELSE IF @puan >= 50
BEGIN
PRINT 'D aldınız';
END
ELSE
BEGIN
PRINT 'Kaldınız (F)';
END
Daha genel bir örnek yapacak olursak. Aşağıdaki komut ile değişkenle belirlenen ismin olup olmadığını kontrol edilip eğer yunus değeri yoksa değişkende belirtilen değerin insert edilmesi gerekmektedir. Bu komutta @@Rowcount ifadesi çalışmadan önce kendinden önceki select cümlesindeki kayıt sayısını getirmektedir.
Declare @adı varchar(20)='Yunus'
Declare @soyad varchar(20)='Yücel'
select*from Personeller where Adi=@adı and SoyAdi=@soyad
if @@ROWCOUNT>0
print @adı+' '+@soyad+' '+'Bulunmaktadır.'
else
begin
print @adı+' '+@soyad+' '+'Bulunmamaktadır.'
insert Personeller(Adi,SoyAdi) values(@adı,@soyad)
print @adı+' '+@soyad+' '+'Eklendi.'
end

Bu komutu tekrar çalıştırılınca Belirtilen ismin bulunduğunu dile getirmektedir.

Bu makalede if-else komutunu detaylı bir şekilde görmüş olduk. Başka makalede görüşmek dileğiyle..