作业七
(1)display_salary 存储过程
-- 创建存储过程:输出工资前三名的教师信息
DELIMITER //
CREATE PROCEDURE display_salary()
BEGIN
SELECT tno AS 教师号, tn AS 教师姓名, sal AS 工资
FROM t
ORDER BY sal DESC
LIMIT 3;
END //
DELIMITER ;
-- 调用存储过程进行测试
CALL display_salary();
执行结果:
(2)display_score 存储过程
-- 创建存储过程:根据学号查询学生选修的所有课程成绩
DELIMITER //
CREATE PROCEDURE display_score(IN p_sno CHAR(10))
BEGIN
DECLARE stu_count INT;
-- 检查学生是否存在
SELECT COUNT(*) INTO stu_count FROM s WHERE sno = p_sno;
IF stu_count = 0 THEN
SELECT '数据库中不存在该学生' AS 提示信息;
ELSE
SELECT s.sno AS 学号, s.sn AS 姓名, c.cn AS 课程名, sc.score AS 成绩
FROM s
JOIN sc ON s.sno = sc.sno
JOIN c ON sc.cno = c.cno
WHERE s.sno = p_sno;
END IF;
END //
DELIMITER ;
-- 测试1:查询存在的学生(s2)
CALL display_score('s2');
-- 测试2:查询不存在的学生(s99)
CALL display_score('s99');
测试1执行结果(学号s2存在):
测试2执行结果(学号s99不存在):
💬 评论