CREATE PROCEDURE `存储过程名字` () BEGIN -- 存储过程的操作语句 END
在存储过程中,可以使用IF语句、WHILE语句和CASE语句等控制语句,也可以使用DECLARE语句定义变量。存储过程中常常会用到游标,可以通过游标来访问数据库中的数据。
CREATE PROCEDURE `计算学生总分` () BEGIN DECLARE v_id INT; DECLARE v_name VARCHAR(50); DECLARE v_score1 INT; DECLARE v_score2 INT; DECLARE v_score3 INT; DECLARE v_total INT; DECLARE cur CURSOR FOR SELECT id, name, score1, score2, score3 FROM student; OPEN cur; REPEAT FETCH cur INTO v_id, v_name, v_score1, v_score2, v_score3; SET v_total = v_score1 + v_score2 + v_score3; UPDATE student SET total = v_total WHERE id = v_id; UNTIL done END REPEAT; CLOSE cur; END
存储过程可以返回结果集,也可以输出参数。如果存储过程返回结果集,需要使用SELECT语句,如果输出参数,则需要使用OUT参数。
CREATE PROCEDURE `计算学生总分并输出平均分` (OUT v_avg INT) BEGIN DECLARE v_total INT; DECLARE cur CURSOR FOR SELECT score1 + score2 + score3 FROM student; OPEN cur; REPEAT FETCH cur INTO v_total; SET v_avg = v_avg + v_total; UNTIL done END REPEAT; CLOSE cur; SET v_avg = v_avg / (SELECT COUNT(*) FROM student); SELECT v_avg; END
总的来说,MySQL存储过程是一种用于自定义数据库操作的有效工具,可以帮助开发人员快速实现一些功能。但是,在使用存储过程时需要注意对数据库性能的影响,避免存储过程过于复杂或不必要的操作。