Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Legt eine Bedingung für die wiederholte Ausführung einer SQL-Anweisung oder eines Anweisungsblocks fest. Die Anweisungen werden wiederholt ausgeführt, solange die angegebene Bedingung true ist. Die Ausführung von Anweisungen in der WHILE Schleife kann innerhalb der Schleife mit den BREAK und CONTINUE Schlüsselwörtern gesteuert werden.
Transact-SQL-Syntaxkonventionen
Syntax
Syntax für SQL Server, Azure SQL-Datenbank, Azure SQL verwaltete Instanz und Microsoft Fabric.
WHILE boolean_expression
{ sql_statement | statement_block | BREAK | CONTINUE }
Syntax für Azure Synapse Analytics and Analytics Platform System (PDW).
WHILE boolean_expression
{ sql_statement | statement_block | BREAK }
Arguments
boolean_expression
Ein Ausdruck , der zurückgibt TRUE oder FALSE. Wenn der boolesche Ausdruck eine SELECT Anweisung enthält, muss die SELECT Anweisung in Klammern eingeschlossen werden.
{ sql_statement | statement_block}
Jede Transact-SQL-Anweisung oder -Anweisung, die mit einem Anweisungsblock definiert ist. Verwenden Sie zum Definieren eines Anweisungsblocks die Schlüsselwörter für die Steuerung des Flusses BEGIN und END.
BREAK
Verursacht einen Exit von der innersten WHILE Schleife. Alle Anweisungen, die nach dem END Schlüsselwort angezeigt werden und das Ende der Schleife markieren, werden ausgeführt.
CONTINUE
Startet eine WHILE Schleife neu. Alle Anweisungen nach dem CONTINUE Schlüsselwort werden ignoriert.
CONTINUE wird häufig, aber nicht immer, durch einen IF Test geöffnet. Weitere Informationen finden Sie unter "Control-of-Flow".
Remarks
Wenn zwei oder mehr WHILE Schleifen geschachtelt sind, wird die innere BREAK Schleife zur nächsten äußersten Schleife beendet. Alle Anweisungen nach dem Ende der inneren Schleife werden zuerst ausgeführt, und dann wird die nächste äußerste Schleife neu gestartet.
Examples
Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2025- oder AdventureWorksDW2025 Beispieldatenbank, die Sie von der Microsoft SQL Server Samples and Community Projects Homepage herunterladen können.
A. Verwenden Sie BREAK und CONTINUE mit geschachtelten WENN... ELSE und WHILE
Wenn im folgenden Beispiel der durchschnittliche Listenpreis eines Produkts kleiner als 300 $ ist, verdoppelt die WHILE Schleife die Preise und wählt dann den maximalen Preis aus. Wenn der Höchstpreis kleiner oder gleich 500 $ ist, wird die WHILE Schleife neu gestartet und verdoppelt die Preise erneut. Diese Schleife verdoppelt die Preise, bis der Höchstpreis größer als 500 $ ist, und beendet dann die WHILE Schleife und druckt eine Nachricht.
USE AdventureWorks2022;
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';
B. Verwenden von WHILE in einem Cursor
Im folgenden Beispiel wird @@FETCH_STATUS zur Steuerung der Cursoraktivitäten in einer WHILE-Schleife verwendet.
DECLARE @EmployeeID AS NVARCHAR(256)
DECLARE @Title AS NVARCHAR(50)
DECLARE Employee_Cursor CURSOR
FOR
SELECT LoginID, JobTitle
FROM AdventureWorks2022.HumanResources.Employee
WHERE JobTitle = 'Marketing Specialist';
OPEN Employee_Cursor;
FETCH NEXT
FROM Employee_Cursor
INTO @EmployeeID, @Title;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT ' ' + @EmployeeID + ' ' + @Title
FETCH NEXT
FROM Employee_Cursor
INTO @EmployeeID, @Title;
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
C. While-Schleife
Wenn im folgenden Beispiel der durchschnittliche Listenpreis eines Produkts kleiner als 300 $ ist, verdoppelt die WHILE Schleife die Preise und wählt dann den maximalen Preis aus. Wenn der Höchstpreis kleiner oder gleich 500 $ ist, wird die WHILE Schleife neu gestartet und verdoppelt die Preise erneut. Diese Schleife verdoppelt die Preise, bis der Höchstpreis größer als 500 $ ist, und beendet dann die WHILE Schleife.
WHILE (
SELECT AVG(ListPrice)
FROM dbo.DimProduct
) < $300
BEGIN
UPDATE dbo.DimProduct
SET ListPrice = ListPrice * 2;
SELECT MAX(ListPrice)
FROM dbo.DimProduct
IF (
SELECT MAX(ListPrice)
FROM dbo.DimProduct
) > $500
BREAK;
END