Rumah >pangkalan data >tutorial mysql >prosedur tersimpan mysql untuk gelung

prosedur tersimpan mysql untuk gelung

WBOY
WBOYasal
2023-05-12 10:08:063080semak imbas

Prosedur tersimpan MySQL ialah kaedah menulis, menyimpan dan menggunakan semula kod SQL dalam MySQL. Prosedur tersimpan boleh menerima dan memproses input parameter, melaksanakan penyata SQL untuk menyelesaikan tugas tertentu dan mengembalikan hasil. Dalam MySQL, prosedur tersimpan sangat berguna untuk logik perniagaan yang kompleks dan pemprosesan data, yang boleh meningkatkan kecekapan dan kebolehpercayaan pangkalan data. Gelung for ialah salah satu penyataan aliran kawalan yang biasa digunakan dalam prosedur tersimpan MySQL Ia boleh digunakan untuk melaksanakan blok kod tertentu secara berulang.

Format sintaks asas bagi pernyataan gelung adalah seperti berikut:

for loop_variable [reverse] in lower_bound..upper_bound loop
    -- 可执行的代码块
end loop;

Antaranya, pembolehubah gelung ialah pembolehubah gelung, yang akan dikemas kini secara automatik dalam setiap gelung adalah pilihan, menunjukkan sama ada untuk melaksanakan dalam arah yang bertentangan Gelung; lower_bound dan upper_bound adalah nilai permulaan dan akhir bagi gelung, ia boleh menjadi pembolehubah, ungkapan atau pemalar.

Menggunakan untuk gelung dalam prosedur tersimpan boleh menjadikan kod lebih ringkas dan cekap. Berikut akan memperkenalkan secara terperinci cara menggunakan untuk gelung dalam prosedur tersimpan MySQL melalui contoh.

Andaikan terdapat pelajar meja pelajar, yang mengandungi maklumat seperti ID pelajar, nama dan markah. Kini anda perlu menulis prosedur tersimpan untuk mengira bilangan pelajar mengikut markah mereka dan menyimpan keputusan statistik dalam jadual baharu. Kita boleh menggunakan penyataan gelung for untuk mengulangi markah semua pelajar, dan kemudian mengira bilangan pelajar berdasarkan julat markah.

Pertama, kita perlu mencipta jadual_statistika baharu untuk menyimpan keputusan statistik skor:

CREATE TABLE score_statistics (
  id INT(11) NOT NULL AUTO_INCREMENT,
  score_range VARCHAR(50) DEFAULT NULL,
  count INT(11) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

Seterusnya, kami menulis prosedur tersimpan hitung_skor_kira untuk melintasi jadual pelajar dan mengira julat skor Bilangan pelajar :

DELIMITER $$
CREATE PROCEDURE calculate_score_count()
BEGIN
  DECLARE i INT DEFAULT 0;
  DECLARE score_range VARCHAR(50);
  DECLARE count INT DEFAULT 0;
  DECLARE lower_bound INT DEFAULT 0;
  DECLARE upper_bound INT DEFAULT 0;
  SET i = 1;
  WHILE i <= 10 DO
    SET lower_bound = (i - 1) * 10;
    SET upper_bound = i * 10;
    SET score_range = CONCAT(lower_bound, '-', upper_bound);
    SET count = (SELECT COUNT(*) FROM student WHERE score BETWEEN lower_bound AND upper_bound);
    INSERT INTO score_statistics (score_range, count) VALUES (score_range, count);
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

Dalam kod di atas, kami menggunakan penyataan gelung sementara untuk melintasi julat skor Bagi setiap julat skor, kami mengira sempadan_bawah dan atas_bawah yang sepadan, dan kemudian menggunakan pernyataan SELECT untuk memilih daripada pelajar. jadual Kira bilangan orang dalam julat ini. Akhir sekali, julat_skor dan kiraan dimasukkan ke dalam jadual statistik_skor.

Memanggil prosedur tersimpan, kita boleh mendapatkan hasil berikut:

call calculate_score_count();
select * from score_statistics;

Jadual skor_statistik menyimpan julat skor dan hasil kiraan kepala yang sepadan Datanya adalah seperti berikut:

id score_range count
1 0-10 1
2 10-20 2
3 20-30 3
4 30-40 4
5 40-50 2
6 50-60 1
7 60-70 1
8 70-80 1
9 80-90 0
10 90-100 1

Lulus Daripada contoh di atas, kita dapat melihat bahawa menggunakan pernyataan gelung for dapat memudahkan penulisan prosedur tersimpan MySQL dan meningkatkan kecekapan program dengan berkesan. Dalam proses pembangunan sebenar, kami boleh menulis prosedur tersimpan yang lebih cekap dan fleksibel berdasarkan keperluan perniagaan tertentu.

Atas ialah kandungan terperinci prosedur tersimpan mysql untuk gelung. 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