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
Lepaskan: 2025-01-01 08:03:09
asal
891 orang telah melayarinya

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
Salin selepas log masuk

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

EXEC stored_proc @varName=@id, @otherVarName='test'
Salin selepas log masuk

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
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan