SEMENTARA (T-SQL)
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric
Mengatur kondisi untuk eksekusi berulang dari pernyataan SQL atau blok pernyataan. Pernyataan dijalankan berulang kali selama kondisi yang ditentukan benar. Eksekusi pernyataan dalam perulangan WHILE dapat dikontrol dari dalam perulangan dengan kata kunci BREAK dan CONTINUE.
Sintaksis
-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric
WHILE Boolean_expression
{ sql_statement | statement_block | BREAK | CONTINUE }
-- Syntax for Azure Azure Synapse Analytics and Parallel Data Warehouse
WHILE Boolean_expression
{ sql_statement | statement_block | BREAK }
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
Boolean_expression
Adalah ekspresi yang mengembalikan TRUE atau FALSE. Jika ekspresi Boolean berisi pernyataan SELECT, pernyataan SELECT harus diapit dalam tanda kurung.
{sql_statement | statement_block}
Adalah pernyataan Transact-SQL atau pengelompokan pernyataan seperti yang didefinisikan dengan blok pernyataan. Untuk menentukan blok pernyataan, gunakan kata kunci control-of-flow BEGIN dan END.
BREAK
Menyebabkan jalan keluar dari perulangan WHILE paling dalam. Setiap pernyataan yang muncul setelah kata kunci END, menandai akhir perulangan, dijalankan.
LANJUTKAN
Menyebabkan perulangan WHILE dimulai ulang, mengabaikan pernyataan apa pun setelah kata kunci LANJUTKAN.
Keterangan
Jika dua atau lebih perulangan WHILE disarangkan, BREAK dalam keluar ke perulangan terluar berikutnya. Semua pernyataan setelah akhir perulangan dalam berjalan terlebih dahulu, dan kemudian perulangan terluar berikutnya dimulai ulang.
Contoh
J. Menggunakan BREAK dan LANJUTKAN dengan IF berlapis... ELSE dan WHILE
Dalam contoh berikut, jika harga daftar rata-rata produk kurang dari $300
, perulangan WHILE
menggandakan harga dan kemudian memilih harga maksimum. Jika harga maksimum kurang dari atau sama dengan $500
, perulangan WHILE
dimulai ulang dan menggandakan harga lagi. Perulangan ini terus menggandakan harga sampai harga maksimum lebih besar dari , dan kemudian keluar dari $500
perulangan WHILE
dan mencetak pesan.
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. Menggunakan WHILE dalam kursor
Contoh berikut menggunakan @@FETCH_STATUS
untuk mengontrol aktivitas kursor dalam perulangan WHILE
.
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
Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)
C: Sederhana Sementara Perulangan
Dalam contoh berikut, jika harga daftar rata-rata produk kurang dari $300
, perulangan WHILE
menggandakan harga dan kemudian memilih harga maksimum. Jika harga maksimum kurang dari atau sama dengan $500
, perulangan WHILE
dimulai ulang dan menggandakan harga lagi. Perulangan ini terus menggandakan harga sampai harga maksimum lebih besar dari $500
, dan kemudian keluar dari perulangan WHILE
.
-- Uses AdventureWorks
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
Lihat Juga
UBAH PEMICU (Transact-SQL)
Bahasa Kontrol Aliran (Transact-SQL)
BUAT PEMICU (Transact-SQL)
Kursor (Transact-SQL)
SELECT (Transact-SQL)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk