gelung prosedur tersimpan mysql

PHPz
Lepaskan: 2023-05-12 09:21:37
asal
4613 orang telah melayarinya

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.

  1. WHILE loop

WHILE loop ialah struktur gelung paling asas, dan sintaksnya adalah seperti berikut:

WHILE condition DO
-- 循环体语句
END WHILE;
Salin selepas log masuk

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

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

Setiap kali pernyataan ini dilaksanakan, nilai i dan jumlah akan dikira semula Sehingga i > melompat keluar dan pernyataan SELECT akan dilaksanakan , mengembalikan nilai jumlah.

  1. FOR gelung

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

Di mana, var_name ialah gelung. Nama kaunter, julat mewakili julat kaunter gelung. julat boleh dalam format berikut:

  • start_value TO end_value: Bermula dari start_value dan berakhir pada end_value, pembilang gelung meningkat sebanyak 1 setiap kali.
  • start_value TO end_value MENGIKUT langkah: Bermula dari start_value dan berakhir pada end_value, pembilang gelung meningkatkan langkah setiap kali.

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

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

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:

  1. Pemprosesan kumpulan data

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

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 >

  1. Analisis dan statistik data

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

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:

  1. Nilai awal pembilang gelung dan nilai akhir perlu ditetapkan dengan betul, jika tidak, ia boleh mengakibatkan gelung tak terhingga atau kehilangan data.
  2. Dalam gelung WHILE, nilai pembilang gelung perlu dikemas kini secara manual, jika tidak gelung akan diteruskan.
  3. Apabila menggunakan gelung WHILE, pernyataan CONTINUE HANDLER FOR NOT FOUND perlu ditetapkan dengan betul untuk mengelakkan prosedur tersimpan daripada bergelung tanpa had selepas kursor melintasi ke penghujung.
  4. Dalam gelung FOR, anda perlu menggunakan julat pembilang gelung yang betul, jika tidak, data mungkin terlepas atau diduplikasi.

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!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan