Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan gelung prosedur tersimpan MySql

Cara menggunakan gelung prosedur tersimpan MySql

WBOY
WBOYke hadapan
2023-05-26 11:06:401160semak imbas

Penerangan Senario

Mari kita ambil senario mudah Pertama, kita mungkin mempunyai situasi di mana jadual markah peperiksaan (t_achievement) mempunyai sekumpulan skrip SQL untuk diproses dan perlu bergantung pada jadual pelajar yang lain. ( t_student) Data meringkaskan markah ujian beberapa pelajar dan merekodkannya dalam jadual ringkasan skor (t_achievement_report).

Penyelesaian

  • Salah satu cara ialah mendapatkan data jadual pelajar untuk diringkaskan melalui keutamaan kod, dan kemudian pindahkan data maklumat pelajar ke ringkasan gred satu persatu mengikut kepada proses ringkasan gred Kod perniagaan diproses.

  • Cara lain juga turut menjadi tema kami hari ini, dan itu adalah melakukannya melalui prosedur tersimpan.

Kes

Buat penyataan jadual:

-- 学生信息表
DROP TABLE IF EXISTS t_student;
CREATE TABLE `t_student` (
  `id` BIGINT(12) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `code` VARCHAR(10) NOT NULL COMMENT '学号',
  `name` VARCHAR(20) NOT NULL COMMENT '姓名',
  `age` INT(2) NOT NULL COMMENT '年龄',
  `gender` CHAR(1) NOT NULL COMMENT '性别(M:男,F:女)',
  PRIMARY KEY (`id`),
  UNIQUE KEY UK_STUDENT (`code`)
) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 学生成绩表
DROP TABLE IF EXISTS t_achievement;
CREATE TABLE `t_achievement` (
  `id` BIGINT(12) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `year` INT(4) NOT NULL COMMENT '学年',
  `subject` CHAR(2) NOT NULL COMMENT '科目(01:语文,02:数学,03:英语)',
  `score` INT(3) NOT NULL COMMENT '得分',
  `student_id` BIGINT(12) NOT NULL COMMENT '所属学生id',
  PRIMARY KEY (`id`) 
) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 成绩汇总表
DROP TABLE IF EXISTS t_achievement_report;
CREATE TABLE `t_achievement_report` (
  `id` BIGINT(12) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `student_id` BIGINT(12) NOT NULL COMMENT '学生id',
  `year` INT(4) NOT NULL COMMENT '学年',
  `total_score` INT(4) NOT NULL COMMENT '总分',
  `avg_score` DECIMAL(4,2) NOT NULL COMMENT '平均分',
  PRIMARY KEY (`id`) 
) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

Memulakan data:

rreee 🎜>

Cara menggunakan gelung prosedur tersimpan MySql

Cara menggunakan gelung prosedur tersimpan MySql

Prosedur tersimpan:

Di sini kami mengambil senario di atas sebagai contoh dan menggunakan prosedur tersimpan gelung ke Memproses data. Tulis prosedur tersimpan untuk meringkaskan markah setiap pelajar dalam data di atas.

INSERT INTO t_student(id, CODE, NAME, age, gender) VALUES
(1, '2022010101', '小张', 18, 'M'),
(2, '2022010102', '小李', 18, 'F'),
(3, '2022010103', '小明', 18, 'M');
INSERT INTO t_achievement(YEAR, SUBJECT, score, student_id) VALUES
(2022, '01', 80, 1),
(2022, '02', 85, 1),
(2022, '03', 90, 1),
(2022, '01', 60, 2),
(2022, '02', 90, 2),
(2022, '03', 98, 2),
(2022, '01', 75, 3),
(2022, '02', 100, 3),
(2022, '03', 85, 3);
rrree

  • Hasil pelaksanaan mengembalikan hasil pertanyaan 3, iaitu id rekod pelajar terakhir

Cara menggunakan gelung prosedur tersimpan MySql

Cara menggunakan gelung prosedur tersimpan MySql

Atas ialah kandungan terperinci Cara menggunakan gelung prosedur tersimpan MySql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam