"Belirli bir koşul sağlanıncaya kadar ilerle, ilerlerken şunları yap. Koşul sağlanınca olayı bitir."
Şimdi ise kullanım şekline bakalım
WHILE (Gidilecek Son Sınır)
BEGIN
// Burada uygun koşulları sağlayan değerlerle işlemler yapmak;
END
Örnek 1
DECLARE @SAYAC INT = 0 WHILE @SAYAC < 20 BEGIN PRINT @SAYAC SET @SAYAC = @SAYAC + 1 END
Örnek 1 Çıktısı

Örnek 2
DECLARE @SAYAC INT = 500 WHILE @SAYAC > 40 BEGIN PRINT @SAYAC SET @SAYAC = @SAYAC - 60 END
Örnek 2 Çıktısı

Örnek 3
DECLARE @Yazi VARCHAR(50) = 'BU MAKALE GAYET GÜZEL' DECLARE @KarakterSayisi INT = LEN(@Yazi) DECLARE @SAYAC INT = 0 WHILE @SAYAC <= @KarakterSayisi BEGIN PRINT SUBSTRING(@Yazi, @SAYAC, 1) SET @SAYAC = @SAYAC + 1 END
Örnek 3 Çıktısı

Şimdi ise While döngüsüyle bir tabloya insert (ekleme) işlemini inceleyelim. Örneğimizi Kisiler tablosu üzerinden yapalım.
Örnek 4
CREATE TABLE Kisiler( id INT PRIMARY KEY NOT NULL IDENTITY(1,1), isim VARCHAR(100), soyisim VARCHAR(100), dogumtarihi DATE )
1'den 100'e kadar ilerleyerek isim, soyisim ve rastgele tarihler oluşturuyoruz. Her ilerleme sırasında bu değerleri Kisiler tablosuna ekliyoruz.
Örnek 5
DECLARE @SAYAC INT = 1 WHILE @SAYAC <= 100 BEGIN DECLARE @Isim VARCHAR(100) = 'İsim' DECLARE @Soyisim VARCHAR(100) = 'Soyisim' DECLARE @Dogumtarihi DATETIME SET @Isim = @Isim + ' ' + CAST(@SAYAC AS VARCHAR(10)) SET @Soyisim = @Soyisim + ' ' + CAST(@SAYAC AS VARCHAR(10)) SET @Dogumtarihi = GETDATE() - (RAND() * 365 * 80) INSERT INTO Kisiler (isim, soyisim, dogumtarihi) VALUES (@Isim, @Soyisim, @Dogumtarihi) SET @SAYAC = @SAYAC + 1 END