第7次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/uzz/cs3
这个作业要求在哪里 https://edu.cnblogs.com/campus/uzz/cs3/homework/13095
这个作业的目标 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('张青平');

   CREATE PROCEDURE stu_info(IN name CHAR(8))
   BEGIN
   SELECT s.学号,姓名,课程编号,分数 FROM student_info s,grade g
   WHERE s.学号=g.学号 and 姓名=name;
   END @@

2 使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。
(2)调用存储过程stu_grade。

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


3 使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。
(2)调用存储过程stu_name。
(3)删除存储过程stu_name。

CREATE PROCEDURE stu_name(in name  char(8))
BEGIN
select max(g.分数) as 最高分,min(g.分数) as 最低分,avg(g.分数)as 平均分 from student_info s,grade g where s.学号=g.学号 and 姓名=name ;
end@@
call stu_name ('张青平');


drop function stu_name
4 使用studentsdb数据库中的grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。
(2)执行存储过程stu_g_r,输入学号0002。
(3)显示0002号学生的选课门数。

BEGIN
select count(课程编号)  from grade where 学号=xuehao order by 学号;
end@@;
call stu_g_r('0002');


5 使用studentsdb数据库中的curriculum表、grade表。
(1)创建一个存储函数num_func,统计指定课程名称的选课人数。
(2)执行存储函数num_func,查看“C语言程序设计”选课人数。

CREATE PROCEDURE num_func(in kcmc varchar(50))
BEGIN
select count(*) into num from grade g,curriculum c where c.课程编号=g.课程编号 and kcmc =c.课程名称 ;
end@@;
call num_func('C语言程序设计');

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 @@
SELECT avg_func('C语言程序设计') 课程平均分;
DROP FUNCTION avg_func;

1 使用RETURN语句:存储函数和存储过程可以使用RETURN语句来返回一个值或者一个结果集。对于存储函数,可以在函数体中使用RETURN语句返回一个标量值
2 in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。
out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程
in out 表示高参数可以向该过程中传递值,也可以将某个值传出去
3 1)定义游标 2)打开游标 3)获取数据行

posted @ 2023-11-03 11:42  邢加梁  阅读(16)  评论(0编辑  收藏  举报