Gunakan kursor untuk melaksanakan prosedur tersimpan untuk setiap baris dalam set hasil pertanyaan
Dalam operasi pangkalan data, anda mungkin perlu melaksanakan prosedur tersimpan untuk setiap baris yang dikembalikan oleh pertanyaan. Kursor menyediakan cara yang cekap untuk mengulangi hasil pertanyaan dan melaksanakan prosedur tersimpan dengan sewajarnya.
Kursor ialah struktur pangkalan data sementara yang membolehkan anda menyimpan hasil pertanyaan dan mengulanginya baris demi baris. Untuk melaksanakan prosedur tersimpan pada setiap baris menggunakan kursor, ikut langkah berikut:
DECLARE
untuk mengisytiharkan kursor, menyatakan pertanyaan yang akan mengembalikan baris untuk diproses. OPEN
untuk memulakan kursor dan menyediakan kandungannya untuk diproses. FETCH NEXT
untuk mendapatkan semula baris pertama daripada kursor. Anda boleh menyimpan data yang dikembalikan dalam pembolehubah untuk kegunaan kemudian. WHILE
, semak jika terdapat lebih banyak baris untuk diproses (@@FETCH_STATUS = 0
). Jika ya, prosedur tersimpan dipanggil dan parameter yang diperlukan diluluskan. CLOSE
untuk melepaskan kursor dan membebaskan memori. Berikut ialah contoh penggunaan kursor dalam MS SQL:
<code class="language-sql">DECLARE @field1 int; DECLARE @field2 int; DECLARE cur CURSOR LOCAL FOR SELECT field1, field2 FROM sometable WHERE someotherfield IS NULL; OPEN cur; FETCH NEXT FROM cur INTO @field1, @field2; WHILE @@FETCH_STATUS = 0 BEGIN EXEC uspYourSproc @field1, @field2; FETCH NEXT FROM cur INTO @field1, @field2; END; CLOSE cur; DEALLOCATE cur;</code>
Perlu diingat bahawa kursor mungkin lebih perlahan daripada operasi berasaskan set. Untuk set data yang besar, adalah disyorkan untuk mempertimbangkan untuk mengoptimumkan proses atau mengulangi hasil secara manual.
Atas ialah kandungan terperinci Bagaimana cara melaksanakan prosedur yang disimpan untuk setiap baris yang dikembalikan dengan pertanyaan menggunakan kursor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!