Prosedur tersimpan MySQL ialah satu set pernyataan SQL yang disusun dan disimpan dalam pangkalan data, dan ia boleh dipanggil berulang kali. Prosedur tersimpan boleh menerima parameter, melaksanakan satu siri operasi dan mengembalikan keputusan dalam pelbagai cara. Artikel ini terutamanya memperkenalkan set hasil prosedur tersimpan MySQL.
1. Set keputusan prosedur disimpan MySQL
Set keputusan prosedur disimpan MySQL boleh dikembalikan dalam salah satu cara berikut:
Prosedur tersimpan boleh menggunakan pernyataan RETURN untuk mengembalikan nilai, yang boleh menjadi integer, nombor titik terapung, tarikh, masa, rentetan, dsb. Jika prosedur tersimpan tidak mengembalikan sebarang hasil, anda boleh menggunakan pernyataan RETURN untuk menamatkan pelaksanaan prosedur tersimpan.
Sebagai contoh, prosedur tersimpan berikut mengembalikan produk dua parameter input:
CREATE PROCEDURE myProc(IN a INT, IN b INT) BEGIN DECLARE result INT; SET result = a * b; RETURN result; END;
Prosedur tersimpan boleh menggunakan Parameter OUT untuk mengembalikan satu atau berbilang nilai. Parameter OUT mesti diisytiharkan dalam senarai parameter prosedur tersimpan dan mesti ditetapkan dalam prosedur tersimpan. Apabila prosedur tersimpan tamat, pemanggil boleh mendapatkan semula nilai ini.
Sebagai contoh, prosedur tersimpan berikut mengembalikan jumlah dan perbezaan dua parameter input:
CREATE PROCEDURE myProc(IN a INT, IN b INT, OUT sum INT, OUT difference INT) BEGIN SET sum = a + b; SET difference = a - b; END;
Prosedur tersimpan boleh gunakan pernyataan SELECT Mengembalikan satu atau lebih set hasil. Set hasil boleh mengandungi satu atau lebih baris data, setiap baris terdiri daripada satu set medan.
Sebagai contoh, prosedur tersimpan berikut mengembalikan semua maklumat pekerja dalam jadual Pekerja:
CREATE PROCEDURE myProc() BEGIN SELECT * FROM Employee; END;
Prosedur tersimpan boleh menggunakan pernyataan SET Mengembalikan pembolehubah pengguna. Pembolehubah pengguna boleh menyimpan sebarang jenis nilai, seperti integer, nombor titik terapung, tarikh, rentetan, dsb.
Sebagai contoh, prosedur tersimpan berikut mengembalikan nama pekerja dalam jadual Pekerja:
CREATE PROCEDURE myProc(IN employeeID INT, OUT employeeName VARCHAR(255)) BEGIN SELECT name INTO @employeeName FROM Employee WHERE ID = employeeID; SET employeeName = @employeeName; END;
2 Bagaimana prosedur tersimpan MySQL menetapkan keputusan
Prosedur yang disimpan boleh gunakan Cara berikut untuk memproses set hasil:
Prosedur tersimpan boleh menggunakan gelung untuk melintasi setiap baris data dalam set hasil dan memproses data.
Sebagai contoh, prosedur tersimpan berikut mengembalikan semua nama pekerja dalam jadual Pekerja:
CREATE PROCEDURE myProc() BEGIN DECLARE employeeName VARCHAR(255); DECLARE done INT DEFAULT FALSE; DECLARE cur CURSOR FOR SELECT name FROM Employee; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; get_employee: LOOP FETCH cur INTO employeeName; IF done THEN LEAVE get_employee; END IF; SELECT employeeName; END LOOP; CLOSE cur; END;
Prosedur yang disimpan boleh menggunakan kursor untuk melintasi Setiap baris data dalam set hasil dan diproses.
Sebagai contoh, prosedur tersimpan berikut mengembalikan semua nama pekerja dalam jadual Pekerja:
CREATE PROCEDURE myProc() BEGIN DECLARE employeeName VARCHAR(255); DECLARE cur CURSOR FOR SELECT name FROM Employee; OPEN cur; get_employee: LOOP FETCH cur INTO employeeName; IF done THEN LEAVE get_employee; END IF; SELECT employeeName; END LOOP; CLOSE cur; END;
Prosedur tersimpan boleh menggunakan subkueri untuk memproses data baris dan lajur dalam set hasil. Subqueries boleh menggabungkan set hasil prosedur tersimpan ke dalam pertanyaan lain.
Sebagai contoh, prosedur tersimpan berikut mengembalikan semua maklumat pekerja dalam jadual Pekerja:
CREATE PROCEDURE myProc() BEGIN SELECT * FROM Employee WHERE departmentID = ( SELECT ID FROM Department WHERE name = 'Sales' ); END;
3 Pengoptimuman set keputusan prosedur tersimpan MySQL
Prosedur yang disimpan boleh gunakan Teknik berikut untuk mengoptimumkan pemprosesan set hasil:
Prosedur tersimpan boleh menggunakan indeks untuk mempercepatkan pertanyaan set hasil. MySQL menyokong pelbagai jenis indeks, termasuk B-tree, hash, dan indeks teks penuh.
Sebagai contoh, dalam prosedur tersimpan berikut, kita boleh mencipta indeks menggunakan medan ID jadual Pekerja:
CREATE INDEX idx_employee ON Employee(ID);
Prosedur tersimpan boleh menggunakan pernyataan LIMIT untuk mengehadkan bilangan set hasil. Ini boleh mengurangkan masa pelaksanaan dan jejak memori prosedur yang disimpan.
Sebagai contoh, dalam prosedur tersimpan berikut, kita boleh menggunakan pernyataan LIMIT untuk mengembalikan maklumat 10 pekerja pertama:
CREATE PROCEDURE myProc() BEGIN SELECT * FROM Employee LIMIT 10; END;
Prosedur tersimpan boleh menggunakan jadual memori untuk mencipta set hasil sementara. Jadual dalam ingatan biasanya lebih pantas daripada jadual cakera, tetapi ia mengambil lebih banyak ruang memori daripada jadual cakera.
Sebagai contoh, dalam prosedur tersimpan berikut, kita boleh menggunakan enjin Memori untuk mencipta set hasil sementara:
CREATE TEMPORARY TABLE tempEmployee ENGINE=MEMORY SELECT * FROM Employee;
Atas ialah kandungan terperinci Penjelasan terperinci tentang set hasil prosedur tersimpan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!