栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据库实验5---存储过程和存储函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库实验5---存储过程和存储函数

存储过程和存储函数
  • 实验内容
  • 实验步骤及处理结果
  • 思考体会
  • 参考资料

实验内容
  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的学生的姓名、课程名称、分数。
    (2)调用存储过程stu_grade。
  3. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
    (1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。
    (2)调用存储过程stu_name。
    (3)删除存储过程stu_name。
  4. 使用studentsdb数据库中的grade表。
    (1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。
    (2)执行存储过程stu_g_r,输入学号0002。
    (3)显示0002号学生的选课门数。
  5. 使用studentsdb数据库中的curriculum表、grade表。
    (1)创建一个存储函数num_func,统计指定课程名称的选课人数。
    (2)执行存储函数num_func,查看“C语言程序设计”选课人数。
  6. 使用studentsdb数据库中的curriculum表、grade表。
    (1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。
    (2)执行存储函数avg_func,查看“C语言程序设计”课程平均分。
    (3)删除存储函数avg_func。
实验步骤及处理结果

粘贴SQL代码(小四号,宋体)及运行结果图

思考体会 参考资料
# 附 代码
#先要有个数据库
CREATE DATABASE studentsdb;
USE studentsdb;

#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('张青平');


DELIMITER @@
CREATE PROCEDURE stu_grade()
BEGIN
  SELECt 姓名,课程名称,分数 FROM student_info s,curriculum c,grade g
  WHERe s.`学号`=g.`学号` AND c.`课程编号`=g.`课程编号` AND s.`学号`='0001';
end @@
DELIMITER ;
CALL stu_grade();


DELIMITER @@
CREATE PROCEDURE stu_name(IN name CHAr(8))
BEGIN
  SELECt `姓名`,MAX(g.分数) 最高分,MIN(g.分数) 最低分,AVG(g.分数) 平均分 FROM student_info s,curriculum c,grade g
  WHERe s.`学号`=g.`学号` AND c.`课程编号`=g.`课程编号` AND 姓名=name GROUP BY 姓名;
END @@
DELIMITER ;
CALL stu_name('张青平');
DROp PROCEDURE stu_name;


DELIMITER @@
CREATE PROCEDURE stu_g_r(IN cno CHAr(4),OUT num INT)
BEGIN
   SELECT count(*) INTO num FROM grade WHERe 学号=cno;
end @@
DELIMITER ;
CALL stu_g_r('0002',@num);
SELECt @num;


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 @@
DELIMITER ;
SELECt 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;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/853982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号