Rumah  >  Artikel  >  pangkalan data  >  Membincangkan set hasil dalam prosedur tersimpan MySQL

Membincangkan set hasil dalam prosedur tersimpan MySQL

PHPz
PHPzasal
2023-04-21 11:19:57555semak imbas

MySQL ialah sistem pengurusan pangkalan data SQL sumber terbuka yang paling popular di dunia Kestabilan, prestasi dan kebolehpercayaannya menjadikannya pangkalan data pilihan untuk kegunaan korporat dan peribadi. MySQL menyediakan kaedah tersimpan (Stored Procedure) yang membolehkan pengguna menulis program menggunakan pernyataan SQL dalam MySQL, dan program ini boleh dipanggil seperti program lain. Prosedur tersimpan MySQL mempunyai banyak kelebihan, seperti mengurangkan jumlah penghantaran rangkaian, mempercepatkan pengambilan data, meningkatkan prestasi, dsb. Dalam artikel ini, kita akan membincangkan set hasil dalam prosedur tersimpan MySQL.

1. Gambaran Keseluruhan

Dalam MySQL, prosedur tersimpan ialah blok pra-tulis pernyataan SQL yang boleh dilaksanakan pada pelayan MySQL. Prosedur tersimpan boleh menyimpan, melaksanakan dan menggunakan semula tugas yang menyelesaikan tugas biasa dalam MySQL, menjadikan pengaturcaraan SQL yang kompleks mudah untuk mereka yang baru menggunakan SQL. Berbanding dengan pernyataan SQL tradisional, kelebihan prosedur tersimpan ialah ia boleh dijalankan pada bahagian pelayan, mengurangkan jumlah penghantaran rangkaian dan siri data.

Prosedur disimpan MySQL boleh mengembalikan hasil, yang boleh berupa nilai skalar atau set hasil. Untuk nilai skalar, prosedur yang disimpan boleh kembali melalui parameter OUT atau mengembalikan nilai untuk set hasil, anda perlu menggunakan kursor untuk memprosesnya. MySQL menyokong penggunaan kursor untuk memproses set hasil kerana set hasil yang dikembalikan oleh prosedur tersimpan biasanya terdiri daripada berbilang baris. Kursor ialah penunjuk yang menunjukkan baris data dalam set hasil. Apabila menggunakan kursor, anda boleh mengulangi set hasil dan menyimpan baris dalam pembolehubah.

2. Kursor dalam prosedur tersimpan

Apabila menggunakan prosedur tersimpan untuk membaca data, kursor ialah alat yang sangat berguna. Kursor membenarkan pengguna untuk mengulangi set hasil dan menyimpan data di dalamnya dalam pembolehubah tertentu. MySQL menjadikan penggunaan kursor sangat mudah Pembangun hanya perlu menyediakan pernyataan SELECT dan merangkumnya ke dalam prosedur tersimpan. Berikut ialah contoh prosedur tersimpan menggunakan kursor:

DELIMITER //
BUAT PROSEDUR example_proc ()
MULA

DECLARE done INT DEFAULT FALSE;
DECLARE a INT;
DECLARE b VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, name FROM users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
    FETCH cur INTO a, b;
    IF done THEN
        LEAVE read_loop;
    END IF;
    SELECT CONCAT(a, ':', b);
END LOOP;
CLOSE cur;

TAMAT //
PEMBANTI ;

Dalam kod di atas, kami mula-mula mentakrifkan pembolehubah kursor dan pernyataan SELECT membaca lajur id dan nama daripada jadual pengguna. Kemudian, buka kursor dan ulangi set hasil. Pembolehubah a dan b masing-masing menyimpan nilai baris semasa kursor. Jika kita telah melelar melalui set hasil, pembolehubah yang dilakukan akan diberikan TRUE. Jika dilakukan adalah BENAR, keluar dari gelung dan tutup kursor. Akhir sekali, gunakan pernyataan SELECT untuk mencetak nilai setiap baris.

3. Keputusan ditetapkan dalam prosedur tersimpan

Apabila prosedur tersimpan perlu mengeluarkan set hasil, kita perlu menggunakan kursor. MySQL membenarkan kami mengisytiharkan pembolehubah kursor (CURSOR) dan kemudian menggunakannya untuk memproses set hasil. Berikut ialah contoh prosedur yang disimpan dengan set hasil:

DELIMITER //
BUAT PROSEDUR example_proc ()
MULAKAN

DECLARE done INT DEFAULT FALSE;
DECLARE a INT;
DECLARE b VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, name FROM users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
CREATE TEMPORARY TABLE results (id INT, name VARCHAR(255));
OPEN cur;
read_loop: LOOP
    FETCH cur INTO a, b;
    IF done THEN
        LEAVE read_loop;
    END IF;
    INSERT INTO results (id, name) VALUES (a, b);
END LOOP;
CLOSE cur;
SELECT * FROM results;

END //
DELIMITER ;

Dalam kod di atas, kami mula-mula menentukan lengkung pembolehubah kursor untuk membaca lajur id dan nama daripada jadual pengguna dalam pernyataan SELECT. Kemudian, kami menggunakan arahan CREATE TEMPORARY TABLE untuk mencipta hasil jadual sementara untuk menyimpan hasil bacaan kursor. Buka kursor dan gunakan pernyataan INSERT INTO untuk memasukkan setiap baris dalam set hasil. Akhir sekali, kami menggunakan pernyataan SELECT untuk mendapatkan semula semua baris daripada jadual hasil mengikut tertib.

4. Kesimpulan

Sokongan MySQL untuk prosedur tersimpan membolehkan pengguna menulis program yang menggunakan pernyataan SQL, dan atur cara ini boleh dipanggil seperti program lain. Prosedur tersimpan boleh mengurangkan volum penghantaran rangkaian, mempercepatkan pengambilan data, meningkatkan prestasi dan banyak lagi. Anda boleh menggunakan kursor untuk merentasi set hasil dan menyimpan data dalam pembolehubah tertentu Kursor ialah penunjuk kepada baris data dalam set hasil. Kursor membenarkan pengguna memproses set hasil dengan lebih fleksibel. Apabila prosedur tersimpan perlu mengeluarkan set hasil, kita perlu menggunakan kursor untuk memproses set hasil. MySQL membenarkan kami mengisytiharkan pembolehubah kursor dan kemudian menggunakannya untuk memproses set hasil.

Atas ialah kandungan terperinci Membincangkan set hasil dalam prosedur tersimpan MySQL. 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