第7次作业-存储过程和存储函数

这个作业属于哪个课程 https://edu.cnblogs.com/campus/uzz/cs3
这个作业要求在哪里 https://edu.cnblogs.com/campus/uzz/cs3/homework/13095
这个作业的目标 <写上具体方面>

1.输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。

DELIMITER @@ CREATE PROCEDURE stu_info(IN name CHAR(8)) BEGIN SELECT s.学号,姓名,课程编号,分数 FROM student_info s,grade g WHERE s.学号=g.学号 and 姓名=name; END @@ 使用CALL命令执行存储过程stu_info,其参数值为'张青平'。 DELIMITER ; CALL stu_info('张青平');

2.使用studentsdb数据库中的student_info表、curriculum表、grade表。

(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。

DELIMITER @@ CREATE PROCEDURE stu_grade() BEGIN SELECT s.姓名,课程名称,分数 FROM student_info s,grade g,curriculum c WHERE s.学号=g.学号 and g.课程编号=c.课程编号 and s.学号 ='0001'; END @@

(2)调用存储过程stu_grade。

DELIMITER ; CALL stu_grade();

3.使用studentsdb数据库中的student_info表、curriculum表、grade表。

(1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。

DELIMITER @@ CREATE PROCEDURE stu_name( IN name CHAR(8)) BEGIN SELECT 姓名,MAX(g.分数) 最高分,MIN(g.分数) 最低分,AVG(g.分数) 平均分 FROM student_info s,grade g,curriculum c WHERE s.学号=g.学号 and g.课程编号=c.课程编号 and 姓名=name GROUP BY 姓名; END @@

(2)调用存储过程stu_name

DELIMITER ; CALL stu_name('马晓夏');

(3)删除存储过程stu_name

DROP PROCEDURE stu_name;

4.使用studentsdb数据库中的grade表。

(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。

(2)执行存储过程stu_g_r,输入学号0002。

(3)显示0002号学生的选课门数

DELIMITER @@ CREATE PROCEDURE stu_g_r(IN number CHAR(4)) BEGIN select count(课程编号) as 选修课门数 from grade where 学号=number; END @@ DELIMITER ; CALL stu_g_r('0002');

5.使用studentsdb数据库中的curriculum表、grade表。

(1)创建一个存储函数num_func,统计指定课程名称的选课人数。

SET GLOBAL log_bin_trust_function_creators=1; DELIMITER @@ CREATE FUNCTION num_func(cname VARCHAR(50)) RETURNS INT BEGIN DECLARE num INT; SELECT COUNT(*) INTO num FROM grade g,curriculum c WHERE g.课程编号=c.课程编号 AND c.课程名称=cname; RETURN num; END @@

(2)执行存储函数num_func,查看“C语言程序设计”选课人数。

DELIMITER ; SELECT num_func('C语言程序设计');

6.使用studentsdb数据库中的curriculum表、grade表。

(1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。

DELIMITER @@ CREATE FUNCTION avg_func(cname VARCHAR(50)) RETURNS DECIMAL BEGIN DECLARE v_acg DECIMAL; DECLARE avg_cur CURSOR FOR SELECT avg(分数) FROM grade g, curriculum c WHERE g.课程编号 = c.课程编号 AND 课程名称 = cname; OPEN avg_cur; FETCH avg_cur INTO v_acg; CLOSE avg_cur; RETURN v_acg; END @@

(2)执行存储函数avg_func,查看“C语言程序设计”课程平均分。

SELECT avg_func('C语言程序设计') 课程平均分;

(3)删除存储函数avg_func。

DROP FUNCTION avg_func;

二.实验思考

1.存储函数和存储过程如何将运算结果返回给外界?
存储函数可以通过return语句返回函数值
存储过程通过out inout 参数将结果带出
2.存储函数有OUT参数、INOUT参数吗
没有,只能用Return语句来返回值。
3.使用游标的步骤
1.声明游标
2.打开游标
3.提取数据 使用游标
4.关闭游标

posted @   张广权  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示