Menggelung Melalui Rekod dalam Pelayan SQL
Pertanyaan bergelung adalah perkara biasa untuk mendapatkan dan memproses data daripada jadual pangkalan data. Panduan ini akan menunjukkan cara untuk menggelung melalui set rekod menggunakan T-SQL dan kursor dalam SQL Server.
Mencipta Kursor
Untuk menggelung melalui set daripada rekod, anda mesti mencipta kursor dahulu. Kursor ialah penunjuk sementara yang boleh digunakan untuk melelaran melalui baris yang dikembalikan oleh pertanyaan. Kod berikut mentakrifkan kursor yang dipanggil @MyCursor:
DECLARE @MyCursor CURSOR;
Menyediakan Pertanyaan
Seterusnya, anda perlu menyediakan pertanyaan yang akan mendapatkan semula data yang anda mahu berpusing. Dalam contoh anda, anda mempunyai pertanyaan yang memilih 1000 rekod teratas daripada jadual dengan StatusID bersamaan dengan 7. Anda boleh menggunakan pertanyaan ini untuk mengisi kursor:
SET @MyCursor = CURSOR FOR select top 1000 YourField from dbo.table where StatusID = 7
Mengambil dan Memproses Rekod
Setelah kursor dibuat dan diisi, anda boleh mengambil rekod baris demi baris ke dalam pembolehubah tempatan, seperti @MyField:
OPEN @MyCursor FETCH NEXT FROM @MyCursor INTO @MyField
Pernyataan FETCH NEXT mendapatkan semula baris seterusnya daripada kursor dan memberikan nilainya kepada pembolehubah yang ditentukan.
Keadaan Gelung
Untuk membuat gelung, anda memerlukan syarat yang menentukan masa untuk berhenti mengambil rekod. Dalam kes ini, anda boleh menggunakan pembolehubah sistem @@FETCH_STATUS, yang mengembalikan status kursor:
WHILE @@FETCH_STATUS = 0 BEGIN
Selagi nilai @@FETCH_STATUS ialah 0, gelung akan terus dilaksanakan. Apabila semua rekod telah diambil, @@FETCH_STATUS akan ditetapkan kepada -1 dan gelung akan ditamatkan.
Logik Pemprosesan
Dalam gelung, anda boleh melaksanakan anda logik yang dikehendaki pada data yang diambil. Sebagai contoh, anda boleh mencetak nilai YourField ke konsol atau mengemas kini rekod berkaitan dalam jadual lain.
/* YOUR ALGORITHM GOES HERE */
Menutup Kursor
Selepas semua rekod mempunyai telah diproses, anda harus menutup dan mengagihkan kursor untuk mengosongkan sumber sistem:
CLOSE @MyCursor; DEALLOCATE @MyCursor;
Dengan mengikuti langkah ini, anda boleh dengan mudah mengulangi satu set rekod dalam SQL Server dan melaksanakan operasi yang diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Menggelung Melalui Rekod SQL Server Menggunakan Kursor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!