Udostępnij za pośrednictwem


Użycie podczas...PODZIAŁ lub Kontynuuj

Instrukcja podczas powtarza instrukcja lub blok instrukcji, jak określony warunek pozostaje prawdziwe.

Dwa Transact-SQL sprawozdania są powszechnie używane z podczas: PRZERWAĆ lub KONTYNUOWAĆ.Wyrażenie BREAK zamyka skrajnym polu podczas pętli i Kontynuuj instrukcja pętli podczas uruchamia się ponownie.Program może wykonać podział instrukcja w przypadku, na przykład nie wierszy do przetwarzania.Kontynuuj instrukcja może zostać wykonany, jeśli na przykład należy kontynuować wykonywanie kodu.

Ostrzeżenie

Jeśli instrukcja SELECT służy jako warunek dla instrukcji WHILE, instrukcja SELECT musi być w nawiasach.

Przykłady

A.Użycie podczas wkursor

W poniższym przykładzie użyto WHILE instrukcja do kontrolowania, ile pobiera są wykonywane.

USE AdventureWorks2008R2;
GO
DECLARE abc CURSOR FOR
SELECT * FROM Purchasing.ShipMethod;
OPEN abc;
FETCH NEXT FROM abc
WHILE (@@FETCH_STATUS = 0)
   FETCH NEXT FROM abc;
CLOSE abc;
DEALLOCATE abc;
GO

Inne ważne podczas badania warunek może być następujące:

WHILE (@ACounterVariable < 100)

Or

WHILE EXISTS(SELECT LastName FROM Person.Person WHERE FirstName = N'Anne')

B.Korzystanie z Zagnieżdżonymi podziału i Kontynuuj...ELSE i podczas

W poniższym przykładzie, jeżeli średnia cena rynkowa produktu wynosi mniej niż $300, WHILE Pętla podwaja ceny, a następnie wybiera maksymalną cenę.Jeśli maksymalna cena jest mniejsza lub równa $500, WHILE pętli uruchamia się ponownie i ponownie podwaja cen.Pętlę kontynuuje Podwajanie ceny, dopóki nie jest większa niż maksymalna cena $500, a następnie kończy działanie WHILE pętli i wydrukuje komunikat o błędzie.

USE AdventureWorks2008R2;
GO
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300
BEGIN
   UPDATE Production.Product
      SET ListPrice = ListPrice * 2
   SELECT MAX(ListPrice) FROM Production.Product
   IF (SELECT MAX(ListPrice) FROM Production.Product) > $500
      BREAK
   ELSE
      CONTINUE
END
PRINT 'Too much for the market to bear';