Menggunakan perulangan T-SQL dengan Synapse SQL di Azure Synapse Analytics

Tip

Microsoft Fabric Data Warehouse adalah gudang relasional skala perusahaan pada fondasi data lake, dengan arsitektur siap masa depan, AI bawaan, dan fitur baru. Jika Anda baru menggunakan pergudangan data, mulailah dengan Fabric Data Warehouse. Beban kerja kumpulan SQL terdedikasi yang ada dapat ditingkatkan ke Fabric untuk mengakses kemampuan baru di seluruh ilmu data, analitik waktu nyata, dan pelaporan.

Artikel ini memberi Anda tips penting untuk menggunakan perulangan T-SQL, mengganti kursor, dan mengembangkan solusi terkait dengan Synapse SQL.

Tujuan dari WHILE loop

Synapse SQL mendukung perulangan WHILE untuk blok pernyataan yang berulang kali dijalankan. Perulangan WHILE ini berlanjut selama kondisi yang ditentukan benar atau sampai kode secara khusus mengakhiri perulangan menggunakan kata kunci BREAK.

Perulangan di Synapse SQL berguna untuk mengganti kursor yang ditentukan dalam kode SQL. Untungnya, hampir semua kursor yang ditulis dalam kode SQL adalah tipe maju cepat, baca-saja. Jadi, perulangan WHILE adalah alternatif yang bagus untuk mengganti kursor.

Mengganti kursor di Synapse SQL

Sebelum menyelam, pertanyaan berikut harus dipertimbangkan: "Bisakah kursor ini ditulis ulang untuk menggunakan operasi berbasis set?" Dalam banyak kasus, jawabannya adalah ya dan sering menjadi pendekatan terbaik. Operasi berbasis set sering dijalankan lebih cepat daripada pendekatan baris demi baris berulang.

Kursor baca-saja yang maju cepat mudah diganti dengan konstruksi perulangan. Kode berikut adalah contoh sederhana. Contoh kode ini memperbarui statistik untuk setiap tabel dalam database. Dengan mengulangi tabel dalam perulangan, setiap perintah dijalankan secara berurutan.

Pertama, buat tabel sementara yang berisi nomor baris unik yang digunakan untuk mengidentifikasi pernyataan individual:

CREATE TABLE #tbl
WITH
( DISTRIBUTION = ROUND_ROBIN
)
AS
SELECT  ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS Sequence
,       [name]
,       'UPDATE STATISTICS '+QUOTENAME([name]) AS sql_code
FROM    sys.tables
;

Kedua, inisialisasi variabel yang diperlukan untuk menjalankan perulangan:

DECLARE @nbr_statements INT = (SELECT COUNT(*) FROM #tbl)
,       @i INT = 1
;

Jalankan pernyataan-pernyataan secara berulang, satu per satu.

WHILE   @i <= @nbr_statements
BEGIN
    DECLARE @sql_code NVARCHAR(4000) = (SELECT sql_code FROM #tbl WHERE Sequence = @i);
    EXEC    sp_executesql @sql_code;
    SET     @i +=1;
END

Terakhir hilangkan tabel sementara yang dibuat di langkah pertama

DROP TABLE #tbl;

Langkah berikutnya

Untuk tips pengembangan selengkapnya, lihat ringkasan pengembangan.