Aracılığıyla paylaş


WHILE (Transact-SQL)

Bir SQL deyim veya deyim blok yinelenen yürütülmesi için bir koşul belirler.Belirtilen bir koşul doğru olduğunda sürece ifadeleri art arda yürütülür.WHILE Döngü deyimleri yürütülmesini BREAK ve CONTINUE sözcüklerle döngü içinde karşı denetlenebilir.

Topic link iconTransact-SQL sözdizimi kuralları

WHILE Boolean_expression 
     { sql_statement | statement_block | BREAK | CONTINUE } 

Bağımsız değişkenler

  • Boolean_expression
    Iş bir ifade döndürenTRUE veya FALSE. SELECT deyimiBoole deyimin bir ifade içerir, parantez içine alınmalıdır.

  • {sql_statement | statement_block}
    Herhangi bir iş Transact-SQL deyim veya blok deyim ile tanımlanan gruplandırma deyim. Bir deyim blok tanımlamak için , BEGIN ve END akış denetimi anahtar sözcüklerini kullanın.

  • BÖLÜM SONU
    Nedenler en içteki WHILE'nden çıkış bir döngü.Döngünün sona işaretleme END anahtar sonra görüntülenen tüm ifadeleri yürütülür.

  • DEVAM ETMEK
    Yeniden başlatmak, , WHILE döngü CONTINUE anahtar sonra tüm ifadeleri yoksayılıyor neden olur.

Remarks

Iki veya daha fazla döngüleri içe içe geçmiştir ANCAK, iç KESME için sonraki dış döngünün çıkılıyor.Ifadeleri iç döngü sonuna sonra ilk çalıştırın ve sonra sonraki dış döngünün yeniden başlatır.

Örnekler

C.BREAK ve CONTINUE WHILE ve iç içe geçmiş IF... ELSE ile'kullanma

Aşağıdaki örnekte, bir ürünün ortalama liste fiyatını küçüktür $300, WHILE döngü fiyatlar ikiye katlanır ve ardından en fazla fiyatını seçer. En yüksek fiyat, küçük veya ona eşit ise $500, WHILE döngü başlatır ve Fiyatlar'ı yeniden ikiye katlanır. Bu döngü en yüksek fiyat, değerden büyük oluncaya kadar fiyat Katlama devam eder. $500ve sonra çıkar WHILE döngü ve bir ileti yazdırır.

b.SıRADA bir imleç kullanma

Aşağıdaki örnek kullanır. @@FETCH_STATUS Denetim imleç faaliyetleri için bir WHILE Loop.

DECLARE Employee_Cursor CURSOR FOR
SELECT EmployeeID, Title 
FROM AdventureWorks.HumanResources.Employee
WHERE ManagerID =3;
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM Employee_Cursor;
   END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO