Gelung prosedur tersimpan MySQL ialah struktur bahasa yang sangat penting yang boleh digunakan dalam prosedur tersimpan supaya prosedur tersimpan boleh melaksanakan operasi khusus untuk keadaan yang berbeza. Artikel ini akan memperkenalkan struktur gelung prosedur tersimpan MySQL, serta senario penggunaan dan penggunaannya, untuk membantu pembangun lebih memahami dan menggunakan bahasa prosedur tersimpan MySQL.
1. Struktur gelung prosedur tersimpan MySQL
Terdapat dua struktur gelung prosedur tersimpan MySQL: gelung WHILE dan gelung FOR. Di bawah ini kami memperkenalkan struktur tatabahasa dan senario penggunaannya secara bergilir-gilir.
WHILE loop ialah struktur gelung paling asas, dan sintaksnya adalah seperti berikut:
WHILE condition DO -- 循环体语句 END WHILE;
Di mana, keadaan ialah ungkapan logik , jika Jika ungkapan itu benar, pernyataan badan gelung dilaksanakan. Setiap kali pernyataan badan gelung dilaksanakan, nilai syarat akan dikira semula Sehingga keadaan tidak lagi benar, badan gelung akan dilonjak keluar dan pernyataan selepas END WHILE akan dilaksanakan.
Sebagai contoh, prosedur tersimpan berikut menggunakan gelung WHILE untuk mengira jumlah nombor daripada 1 hingga n:
CREATE PROCEDURE sum(n INT) BEGIN DECLARE i INT DEFAULT 1; DECLARE total INT DEFAULT 0; WHILE i <= n DO SET total = total + i; SET i = i + 1; END WHILE; SELECT total; END;
Di mana pembolehubah i dan jumlah digunakan untuk mengira nilai jumlah dan bilangan gelung, masing-masing. Apabila i <= n, laksanakan pernyataan badan gelung:
SET total = total + i; SET i = i + 1;
Setiap kali pernyataan ini dilaksanakan, nilai i dan jumlah akan dikira semula Sehingga i > melompat keluar dan pernyataan SELECT akan dilaksanakan , mengembalikan nilai jumlah.
FOR gelung ialah struktur gelung yang lebih mudah daripada gelung WHILE Sintaksnya adalah seperti berikut:
FOR var_name [, var_name] ... IN range DO -- 循环体语句 END FOR;
Di mana, var_name ialah gelung. Nama kaunter, julat mewakili julat kaunter gelung. julat boleh dalam format berikut:
Sebagai contoh, prosedur tersimpan berikut menggunakan gelung FOR untuk mengira kuasa dua nombor dari 1 hingga n:
CREATE PROCEDURE square(n INT) BEGIN DECLARE i INT; DECLARE v INT; FOR i IN 1 TO n DO SET v = i * i; SELECT v; END FOR; END;
di mana, pembilang gelung i pergi dari 1 ke n , meningkat sebanyak 1 setiap kali, Laksanakan pernyataan badan gelung:
SET v = i * i; SELECT v;
Setiap kali pernyataan ini dilaksanakan, nilai v akan dikira semula sehingga i >, badan gelung akan dilonjak keluar Kenyataan TAMAT akan dilaksanakan.
2. Senario penggunaan kitaran prosedur disimpan MySQL
Struktur kitaran prosedur disimpan MySQL biasanya digunakan dalam senario berikut:
Struktur gelung prosedur tersimpan MySQL boleh digunakan untuk memproses data dalam kelompok, memproses berbilang keping data pada satu masa dan meningkatkan kecekapan dan prestasi pemprosesan data.
Sebagai contoh, prosedur tersimpan berikut menggunakan gelung WHILE untuk mengurangkan harga item dalam jadual produk dengan harga lebih daripada 100 kali 5 dalam kelompok:
CREATE PROCEDURE update_price() BEGIN DECLARE p_id INT; DECLARE p_price DECIMAL(10,2); DECLARE done INT DEFAULT FALSE; DECLARE cur CURSOR FOR SELECT id, price FROM product WHERE price > 100; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; REPEAT FETCH cur INTO p_id, p_price; IF NOT done THEN SET p_price = p_price - 5; UPDATE product SET price = p_price WHERE id = p_id; END IF; UNTIL done END REPEAT; CLOSE cur; END;
Antaranya, kursor cur ditakrifkan untuk melintasi Produk produk dengan harga lebih daripada 100 dalam jadual. Setiap kali melalui gelung, sekeping data diperoleh daripada kursor, dan jika p_price >
Struktur gelung prosedur tersimpan MySQL boleh digunakan untuk analisis data dan statistik, seperti mengira purata, median dan penunjuk statistik lain.
Sebagai contoh, prosedur tersimpan berikut menggunakan gelung WHILE untuk mengira purata harga komoditi:
CREATE PROCEDURE avg_price() BEGIN DECLARE p_price DECIMAL(10,2); DECLARE total DECIMAL(10,2) DEFAULT 0; DECLARE count INT DEFAULT 0; DECLARE done INT DEFAULT FALSE; DECLARE cur CURSOR FOR SELECT price FROM product; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; REPEAT FETCH cur INTO p_price; IF NOT done THEN SET total = total + p_price; SET count = count + 1; END IF; UNTIL done END REPEAT; CLOSE cur; SELECT total/count; END;
Antaranya, cursor cursor ditakrifkan untuk mendapatkan harga komoditi dalam jadual produk dan gunakan gelung untuk mengira Jumlah harga dan kuantiti item dijumlahkan, dan akhirnya harga purata dikembalikan.
3. Langkah berjaga-jaga untuk penggunaan gelung prosedur tersimpan MySQL
Apabila menggunakan struktur gelung prosedur tersimpan MySQL, anda perlu memberi perhatian kepada perkara berikut:
4. Ringkasan
Struktur gelung prosedur tersimpan MySQL ialah alat penting untuk pembangun dalam pemprosesan dan analisis data dengan cekap memproses data dan mengira penunjuk. Apabila menggunakan struktur gelung, anda perlu memberi perhatian kepada isu seperti nilai awal dan nilai akhir pembilang gelung, ketepatan pernyataan gelung dan penggunaan kursor untuk memastikan kestabilan dan ketepatan prosedur yang disimpan.
Atas ialah kandungan terperinci gelung prosedur tersimpan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!