Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengulang Melalui Keputusan Pertanyaan T-SQL dan Melaksanakan Prosedur Tersimpan untuk Setiap Baris?

Bagaimanakah Saya Boleh Mengulang Melalui Keputusan Pertanyaan T-SQL dan Melaksanakan Prosedur Tersimpan untuk Setiap Baris?

Linda Hamilton
Linda Hamiltonasal
2025-01-01 08:03:09863semak imbas

How Can I Iterate Through T-SQL Query Results and Execute a Stored Procedure for Each Row?

T-SQL Menggelung melalui Keputusan Pertanyaan

Andaikan anda mempunyai pertanyaan yang mendapatkan semula senarai ID daripada jadual:

SELECT @id=table.id FROM table

Anda kemudiannya perlu melaksanakan prosedur tersimpan untuk setiap baris, memasukkan ID dan satu lagi value:

EXEC stored_proc @varName=@id, @otherVarName='test'

Dalam T-SQL, anda boleh mencapai ini menggunakan CURSOR:

DECLARE @id INT
DECLARE @name NVARCHAR(100)
DECLARE @getid CURSOR

SET @getid = CURSOR FOR
SELECT table.id,
       table.name
FROM   table

OPEN @getid
FETCH NEXT
FROM @getid INTO @id, @name
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC stored_proc @varName=@id, @otherVarName='test', @varForName=@name
    FETCH NEXT
    FROM @getid INTO @id, @name
END

CLOSE @getid
DEALLOCATE @getid

Dalam skrip ini:

  • Kami mengisytiharkan tiga pembolehubah : @id (INT), @name (NVARCHAR(100)), dan CURSOR bernama @getid.
  • Kami menetapkan @getid kepada CURSOR yang memilih lajur ID dan nama daripada jadual jadual.
  • Kami membuka KURSOR, mengambil baris pertama dan menyimpan hasilnya dalam @ id dan @name.
  • Kami memasukkan gelung WHILE yang berterusan selagi nilai @@FETCH_STATUS ialah 0 (menunjukkan bahawa satu baris berjaya diambil).
  • Di dalam gelung, kami melaksanakan prosedur tersimpan, memasukkan @id, nilai literal 'ujian' untuk parameter @otherVarName dan nilai nama yang diambil untuk Parameter @varForName.
  • Kami mengambil baris seterusnya dan menyimpan hasilnya dalam @id dan @name.
  • Apabila tiada lagi baris untuk diambil, kami menutup dan mengagihkan CURSOR.

Skrip ini membolehkan anda mengulangi hasil pertanyaan dan melaksanakan prosedur yang disimpan untuk setiap baris, mengemas kini nama pembolehubah dan nilai berdasarkan data dalam pertanyaan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulang Melalui Keputusan Pertanyaan T-SQL dan Melaksanakan Prosedur Tersimpan untuk Setiap Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn