Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
SQL deyiminin veya deyim bloğunun tekrarlanan yürütülmesi için bir koşul ayarlar. Belirtilen koşul true olduğu sürece deyimler tekrar tekrar yürütülür. Döngüdeki WHILE deyimlerin yürütülmesi, ve BREAK anahtar sözcükleriyle CONTINUE döngünün içinden denetlenebilir.
Transact-SQL söz dizimi kuralları
Syntax
SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Microsoft Fabric için söz dizimi.
WHILE boolean_expression
{ sql_statement | statement_block | BREAK | CONTINUE }
Azure Synapse Analytics ve Analytics Platform Sistemi (PDW) için söz dizimi.
WHILE boolean_expression
{ sql_statement | statement_block | BREAK }
Arguments
boolean_expression
veya döndüren TRUEFALSE. Boole ifadesi bir SELECT deyim içeriyorsa, SELECT deyimi parantez içine alınmalıdır.
{ sql_statement | statement_block }
Deyim bloğuyla tanımlandığı şekilde Transact-SQL deyim veya deyim gruplandırma. Bir deyim bloğu tanımlamak için, ve akış denetimi anahtar sözcüklerini BEGINENDkullanın.
BREAK
En WHILE içteki döngüden çıkışa neden olur. Anahtar sözcüğünden END sonra görünen ve döngünün sonunu işaretleyen tüm deyimler yürütülür.
CONTINUE
Döngü yeniden WHILE başlatılır. Anahtar sözcüğünden CONTINUE sonraki tüm deyimler yoksayılır.
CONTINUE sık sık, ancak her zaman değil, bir IF test tarafından açılır. Daha fazla bilgi için bkz. Akış Denetimi.
Remarks
İki veya daha fazla WHILE döngü iç içe yerleştirilmişse, iç BREAK en dıştaki döngüye çıkar. İç döngünün sonundan sonraki tüm deyimler önce çalıştırılır ve ardından en dıştaki bir sonraki döngü yeniden başlatılır.
Examples
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
A. İç içe EĞER ile BREAK ve CONTINUE kullanın... ELSE ve WHILE
Aşağıdaki örnekte, bir ürünün ortalama liste fiyatı 300 TL'den düşükse döngü WHILE fiyatları ikiye katlar ve ardından en yüksek fiyatı seçer. Maksimum fiyat 500 TL'den küçük veya buna eşitse döngü WHILE yeniden başlatılır ve fiyatları yeniden ikiye katlar. Bu döngü, maksimum fiyat 500 TL'den büyük olana kadar fiyatları iki katına çıkmaya devam eder ve döngüden WHILE çıkar ve bir ileti yazdırır.
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. İmleçte WHILE kullanma
Aşağıdaki örnek, bir @@FETCH_STATUS döngüdeki imleç etkinliklerini denetlemek için kullanırWHILE.
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
Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)
C. WHILE döngüsü
Aşağıdaki örnekte, bir ürünün ortalama liste fiyatı 300 TL'den düşükse döngü WHILE fiyatları ikiye katlar ve ardından en yüksek fiyatı seçer. Maksimum fiyat 500 TL'den küçük veya buna eşitse döngü WHILE yeniden başlatılır ve fiyatları yeniden ikiye katlar. Bu döngü, maksimum fiyat 500 TL'den büyük olana kadar fiyatları iki katına çıkmaya devam eder ve ardından döngüden WHILE çıkar.
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
İlgili içerik
- ALTER TRIGGER (Transact-SQL)
- Akış Kontrolü
- TETİKLEYİCİ OLUŞTUR (Transact-SQL)
- İmleçler (Transact-SQL)
- SEÇ (Transact-SQL)