Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggulung Set Keputusan MySQL Menggunakan Prosedur Tersimpan?

Bagaimanakah Saya Boleh Menggulung Set Keputusan MySQL Menggunakan Prosedur Tersimpan?

Linda Hamilton
Linda Hamiltonasal
2024-11-19 00:42:02980semak imbas

How Can I Loop Over MySQL Result Sets Using Stored Procedures?

Looping Over Result Sets dalam MySQL: Pendekatan Berasaskan Prosedur

Pengaturcara selalunya perlu memproses hasil pertanyaan MySQL dalam satu gelung. Tugas ini biasanya dicapai menggunakan fungsi mysql_fetch_assoc dalam PHP atau kaedah serupa dalam bahasa pengaturcaraan lain. Walau bagaimanapun, adalah mungkin juga untuk mencipta prosedur tersimpan dalam MySQL yang menggelungkan hasil pertanyaan.

Untuk mencapai ini, seseorang boleh menggunakan templat prosedur tersimpan seperti berikut:

CREATE PROCEDURE GetFilteredData()
BEGIN
  DECLARE bDone INT;

  DECLARE var1 CHAR(16); 
  DECLARE var2 INT;
  DECLARE var3 VARCHAR(50);
  
  DECLARE curs CURSOR FOR SELECT something FROM somewhere WHERE some stuff;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;

  DROP TEMPORARY TABLE IF EXISTS tblResults;
  CREATE TEMPORARY TABLE IF NOT EXISTS tblResults  (
    Fld1 type,
    Fld2 type,
    ...
  );

  OPEN curs;

  SET bDone = 0;
  REPEAT
    FETCH curs INTO var1, var2, var3;

    IF whatever_filtering_desired
       INSERT INTO tblResults VALUES (var1, var2, var3);
    END IF;
  UNTIL bDone END REPEAT;

  CLOSE curs;
  SELECT * FROM tblResults;
END

Pertimbangan:

  • Adalah disyorkan untuk meparameterkan pertanyaan, terutamanya kriteria carian, untuk meningkatkan fleksibiliti prosedur yang disimpan.
  • Pertimbangkan untuk menghantar ID sesi dalam senario berbilang sesi untuk memastikan nama jadual sementara yang unik.
  • Walaupun kursor menyediakan pendekatan prosedur untuk menggelungkan hasil, penggunaannya mungkin tidak diperlukan atau mengehadkan prestasi. Meneroka penyelesaian SQL deklaratif semata-mata adalah dinasihatkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggulung Set Keputusan MySQL Menggunakan Prosedur Tersimpan?. 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