Anasayfa / Yazılım / SQL / SQL’de WHILE, CONTINUE ve BREAK Deyimleri Uygulamaları

SQL’de WHILE, CONTINUE ve BREAK Deyimleri Uygulamaları

SQL’de şimdi While, Continue ve Break deyimleri ile ilgili bir kaç örnek yapalım.

Örnek : A’dan Z’ye kadar olan harfleri sırası ile WHILE döngüsü ile yazdıralım. Burada tabi ASCII kodlarından faydalanacağız, dolayısı ile rakamsal değerleri karaktere çevirmemiz gerekiyor. Bunun içinde CHAR fonksiyonunu kullanacağız. Ben şunu biliyorum ki A değerinin karşılığı 65. Yani A’yı yazdırmak için şöyle bir sorgu yazmam gerek:

DECLARE @Harf CHAR(1);
SET @Harf = CHAR(65);
PRINT @Harf;

Şimdi A’dan Z’ye kadar olan harfleri yazdıralım. Bunun içinde aşağıdaki gibi bir sorgu oluştururum.

DECLARE @Sayac INT = 65;
WHILE @Sayac < 91 BEGIN
PRINT CHAR(@Sayac);
SET @Sayac += 1;
END;

Sonucu görelim :

2013121603

Örnek : Şimdi de iç içe WHILE döngüsü içeren bir örnek yapalım.

DECLARE @DisSayac INT = 1;
DECLARE @IcSayac INT;

WHILE @DisSayac < 5 BEGIN
SET @IcSayac = 1;
    WHILE @IcSayac < 3 BEGIN
	PRINT @DisSayac * @IcSayac;
	SET @IcSayac += 1;
	END;
SET @DisSayac += 1;
END;

Şimdi bu örneğim ne yapıyor anlatayım. Bu örneğimde DECLARE ile iki adet INT tipinde değişken oluşturdum. Bunlara DisSayac ve IcSayac adlarını verdim. DisSayacim 5’ten küçük olduğu sürece sayacak, iç sayacım ise 3’ten küçük olduğu sürece sayacak. Ve içte yer alan iç sayacımın her adımı dıştaki sayacım ile çarpılacak ve bu değer yazdırılacak.

Yani diyelim ki dış sayaç değeri 1 iken iç sayaç değeri 1 olduğunda 1*1 sonucu olarak 1 yazacak, dış 1 iken iç 2 olunca 1*2’den sonuç olarak 2 yazacak. Böyle devam edecek. Şimdi sonucu görelim:

2013121604

Örnek : Şimdi de şöyle bir örnek yapalım. Dış sayacımız 100’e kadar olsun. İç sayacımız da 5’e kadar olsun. Dış sayacın her adımında iç sayacın her adımı ile çarpılacak. Yani 1*1, 1*2, 1*3, 1*4, 1*5, 2*1, 2*2, 2*3 gibi devam edecek. Ve bunların sadece sonuçlarını yazacak. Ancak şöyle birde döngüden çıkış şartı oldun. Dış sayaç 5 iken örneğin hiç işlem yapılmasın yani iç sayaç ile çarpım işlemi yapılmasın, döngüden çıkıldı desin. Bunun kontrolünü de şöyle yapabiliriz. IF döngüsü ile dışsayacı 5’e böleriz, eğer bölüm sonucu kalan 0 veriyorsa, direkt olarak döngüden çıkıldığını belirtebiliriz. Biraz karışık gibi, aşağıdaki koda ve sonuca bakınca çok kolay olduğunu görebilirsiniz.

DECLARE @DisSayac INT = 1;
DECLARE @IcSayac INT;

WHILE @DisSayac <= 100 BEGIN
SET @IcSayac = 1;
    WHILE @IcSayac <= 5 BEGIN
	IF @DisSayac % 5 = 0 BEGIN
	PRINT 'Döngüden çıkıldı'
	BREAK;
	END;
	PRINT @DisSayac * @IcSayac;
	SET @IcSayac += 1;	
    END;
SET @DisSayac += 1;
END;

Şimdi sonucu görelim:

2013121605

Görüleceği üzere sonuçlarda 1,2,3,4,5,2,4,6,8,10,3,6,9,12,15,4,8,12,16,20 sonuçlarını aldık, dış sayaç 5 olunca ise direkt Döngüden çıkıldı yazdırdık, sonra dış sayaç 6 oldu ve sıra ile 6,12,18,24,30 şeklinde devam etti. Dış sayaç yani 5 iken, 10 iken , 15 iken ve 100’e kadar 5’in katları iken işlem yapılmadı.

Örnek: Şimdi de WHILE döngüsü kullanarak, 1’den 20’ye (20 dahil) kadar olan sayıları TEK ve ÇİFT şeklinde sıra ile yazdıralım.

DECLARE @Sayac INT = 1;
WHILE @Sayac <= 20 BEGIN
IF @Sayac % 2 = 0 BEGIN
PRINT 'Sayısı Çift';
END
ELSE BEGIN PRINT 'Sayı Tek';
END
SET @Sayac += 1;
END;

Sonuç ise;

2013121606

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir