IF ..(Else), belirlenen şarta bağlı olarak işlem yapabilmeyi sağlar. Sıralı IF bloklarında belirtilen şartlar sağlanmadığında işlem en son ELSE bloğunda biter. ELSE kullanılmak zorunda değildir ama kod bloğunu çalıştırdığınızda IF içinde belirtilen koşullar da sağlanmıyorsa bir sonuç dönmeyecektir.
Yapılacak işlem tek bir satırdan oluşuyorsa BEGIN END yazılmadan da kod çalışacaktır.
IF koşul (boolean_ifadesi)
BEGIN
koşul karşılanıyorsa yapılacak işlem (print, select,update, delete vb.) (TRUE)
END
ELSE
BEGIN
üst yapılacak işlem (print, select,update, delete vb.) (FALSE)
END
(Örneklerde NORTHWIND veritabanı kullanılmıştır.)
Aşağıdaki örnekte IF içinde kullanılmak üzere UrunSayısı isimli Integer bir değişken oluşturuldu. SET ile değişkenin değerini Products tablosundaki toplam kayıt sayısından alması sağlandı.
Hemen altında basit bir IF işlemi var. Eğer @UrunSayısı 30 dan küçükse ‘Urun sayısı 30dan az’
Yazacak. Değilse, ‘Urun sayısı 30dan fazla’ yazacaktır.
-Bu örnekte toplam ürün sayısı 77 geldiği için ‘Urun sayısı 30dan fazla’ sonucu dönüyor-
DECLARE @Urunsayisi INT SET @Urunsayisi=(SELECT COUNT(*) FROM Products) IF @Urunsayisi<30 PRINT 'Urun sayısı 30dan az' ELSE PRINT 'Urun sayısı 30dan fazla'
Aynı sorgu BEGIN END kullanılarak da yazılabilir. Aşağıda BEGIN END ve 3 satırlı işlem kullanımı da gösterilmiştir.
DECLARE @Urunsayisi INT SET @Urunsayisi=(SELECT COUNT(*) FROM Products) IF @Urunsayisi<30 BEGIN PRINT 'Urun sayısı 30dan az' PRINT 'Satis icin yeterli ürün bulunmuyor' SELECT TOP 5* FROM Products END ELSE BEGIN PRINT 'Urun sayısı 30dan fazla' PRINT 'Satis icin yeterli ürün bulunuyor' SELECT TOP 5 ProductName,* FROM Products END
ELSE IF YAPISI
İşlem yapılacak alan için kontrol noktaları arttırılmak istendiğinde İç içe If kullanılır.
İç İçe IF
IF koşul1
BEGIN
— işlem1
END
ELSE IF koşul2
BEGIN
— işlem2
END
ELSE IF koşul3
BEGIN
— işlem3
END
…..
ELSE
BEGIN
— işlemSon
END
ELSE IF için çalışma yöntemi sıralı bir şekilde ilerler. Sırayla tüm koşulları kontrol ederek, koşula ilk uyan işlemi gerçekleştirir.
Aşağıdaki örnekte, SELECT COUNT(*) FROM Products sorgusundan gelen ürün sayısı 77 olduğu için 3.koşula düşecek ve ‘Urun sayısı yeterli miktarda’ yazdıracaktır.
(Farklılık açısından son iki işlemde BEGIN END kullanılmamıştır.)
DECLARE @Urunsayisi INT SET @Urunsayisi=(SELECT COUNT(*) FROM Products) IF @Urunsayisi<30 BEGIN PRINT 'Urun sayısı 30dan az' END ELSE IF @Urunsayisi>=30 AND @Urunsayisi<50 BEGIN PRINT 'Urun sayısı 30dan fazla' END ELSE IF @Urunsayisi>=50 AND @Urunsayisi<80 PRINT 'Urun sayısı yeterli miktarda' ELSE PRINT 'Urun sayısı çok fazla'
İÇ İÇE IF
Syntax üzerinden incelediğimizde ilk önce gittikçe daha özele inen bir kontrol noktalarını kontrol eder. Koşul1 uyuyorsa kontrole devam eder ve koşul2 ye bakar. True dönmeye devam ettikçe tüm if koşullarını kontrol eder. En son yapılacak işlemi gerçekleştirir. Koşulların tuttuğu tüm noktalarda yapılacak bir işlem eklendiyse bunları gerçekleştirir.
IF koşul1
BEGIN 1 —-bir işlem yapılmak isteniyorsa eklenir.(optional)
IF koşul2
BEGIN 2 —-bir işlem yapılmak isteniyorsa eklenir. (optional)
IF koşul3
BEGIN 3 ….. yapılacak işlem eklenir.
END 3
END 2
END 1
ELSE
BEGIN 4
END 4
ÖRNEK
DECLARE @Urunsayisi INT SET @Urunsayisi=(SELECT COUNT(*) FROM Products) IF @Urunsayisi>=50 AND @Urunsayisi<80 BEGIN PRINT 'Urun sayısı 50 ile 80 arasında' IF @Urunsayisi=77-->30 AND @Urunsayisi<=50 PRINT 'Urun sayısı tam istenen sayıda' BEGIN IF @Urunsayisi>80 BEGIN PRINT 'Urun sayısı çok fazla' END END END else print 'Ürün bilgisine ulaşılamadı'
ÇIKTI
Urun sayisi 50 ile 80 arasinda Urun sayisi tam istenen sayida