版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业HUNAN UNIVERSITY数据库实验报告学生姓名 学生学号 专业班级 指导老师 2017 年5月 24日数据库系统概论实验报告(六)题目:PL/SQL存储过程姓名:Nomad日期:2017.5.24实验环境硬件:联想笔记本电脑操作系统:Windows 7旗舰版应用软件:MySQL 6.3,Navicat Preminum 11.2.16实验内容熟悉使用存储过程来进行数据库应用程序的设计。统计离散数学的成绩分布情况,即按照各分数段统计人数。代码如下:DELIMITE
2、R $ CREATE PROCEDURE sumScore() /*统计课程离散数学 各分数段人数*/BEGIN declare less60 smallint default 0; /*90*/ declare countcno char(4) default *; SELECT Cno INTO countcno FROM course WHERE cname = 数学; /*确保course表中有数学这门课*/ SELECT COUNT(*) INTO less60 FROM sc WHERE cno = countcno AND grade = 60 AND grade = 70 AN
3、D grade = 80 AND grade = 90; /*将结果存入新表sumScore中*/ create table sumScore( scorestage char(10), number smallint); insert into sumScore values(x60, less60); insert into sumScore values(60=x70, b60a70); insert into sumScore values(70=x80, b70a80); insert into sumScore values(80=x=90, more90);END$call su
4、mScore(); /*调用上述存储过程*/首先创建存储过程,然后再调用存储过程。结果如下:(上述结果图截自Navicat软件)可以看到,在stuinfo中新建了一个基本表sumscore,表中内容是数学课程成绩的各分数段的人数。统计任意一门课的平均成绩。代码如下:DELIMITER $ CREATE PROCEDURE scoreAvg()BEGIN declare curname char(40) default null; /*临时存放课程名*/declare curcno char(4) default null; /*临时存放课程号*/declare curavg float; /*
5、临时存放平均成绩*/declare mycursor cursor for /*定义游标*/ select cno, cname from course;declare continue handler for not found set curavg=-1;open mycursor; /*打开游标*/fetch mycursor into curcno,curname; /*从结果集中取第一条记录到临时变量中*/repeat /*重复取记录*/select avg(grade) into curavg from sc where cno = curcno;insert into score
6、Avg values(curcno,curname,curavg); /*将结果存入新表scoreAvg中*/fetch mycursor into curcno,curname;until curavg=-1end repeat; close mycursor; /*关闭游标*/END$call scoreAvg(); /*调用上述存储过程*/首先创建存储过程,然后再调用存储过程。结果如下:可以看到,在stuinfo中新建了一个基本表scoreavg,表中内容是各课程的平均成绩。将学生选课成绩从百分制改为等级制(即A、B、C、D、E)。代码如下:DELIMITER $ CREATE PROC
7、EDURE changeRank() /*改变成绩等级*/BEGIN declare chgrade char(1) default null; /*临时存放新的成绩等级*/ declare curcno smallint(6); /*临时存放课程号*/ declare curgrade int; /*临时存放成绩*/ declare flag int default 0; declare mycursor cursor for select cno,grade from sc; /*定义游标*/ declare continue handler for not found set flag=
8、-1; /*在sc表中新建一列,用于存放新的成绩等级*/ alter table sc add column(newgrade char(1); open mycursor; /*打开游标*/ fetch mycursor into curcno,curgrade; repeat /*当游标打开时进行下列循环处理*/ if curgrade 60 then set chgrade = E; elseif curgrade 70 then set chgrade = D; elseif curgrade 80 then set chgrade = C; elseif curgrade 90 th
9、en set chgrade = B; else set chgrade = A; end if; update sc set newgrade=chgrade where cno=curcno and grade=curgrade; fetch mycursor into curcno,curgrade; until flag=-1 /*直到游标指向空记录*/end repeat; close mycursor; /*关闭游标*/ select * from sc;END$SET SQL_SAFE_UPDATES=0; /*此步骤是必要的,否则将无法修改sc表*/call changeRank(); /*调用上述存储过程*/alter table scdrop column newgrade; /*在调用该存储过程前,需要先执行此语句,因为在创建存储过程时已经在sc表中添加了这个属性*/首先创建存储过程,然后再调用存储过程,结果如下:可以看到,各成绩被赋予了新的等级。出现的问题与解决方案语句格式不正确。一开始按照课本上的格式来创建存储过程,结果无论是在MySQL还是Postgresql上都报语法错误,后来经网上查阅资料,按照MySQL的标准格式对代码进行修改后,可以执行。2、在本次实验中,创建的存储过程都是不带参数的,因此创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光刻技术原理
- 2025年高职地图数据图例转换技术(图例转换实操)试题及答案
- 2025年中职设备维护管理(管理技术)试题及答案
- 2025年中职服装与服饰设计(服饰教学实操)试题及答案
- 2025年高职房地产经营与管理(房地产经营与管理基础)试题及答案
- 2025年高职人力资源管理(招聘与配置)试题及答案
- 2025年高职河运海事管理(海事管理基础)试题及答案
- 2025年中职电子技术应用(电子电路基础)试题及答案
- 2025年大学环境科学(水污染控制实验)试题及答案
- 2025年中职第二学年(老年护理方向)照护实务阶段测试题及答案
- 供货流程管控方案
- 章节复习:平行四边形(5个知识点+12大常考题型)解析版-2024-2025学年八年级数学下册(北师大版)
- 《实践论》《矛盾论》导读课件
- 中试基地运营管理制度
- 老年病康复训练治疗讲课件
- DB4201-T 617-2020 武汉市架空管线容貌管理技术规范
- 药品追溯码管理制度
- 脚手架国际化标准下的发展趋势
- 购销合同范本(塘渣)8篇
- 生鲜业务采购合同协议
- 销售合同评审管理制度
评论
0/150
提交评论