版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CAV 004-2024 T/CAS 900-2024特殊健康状态儿童预防接种评估门诊与转诊系统建设规范
- DB32/T 4980-2024党政机关公物仓运行管理规范
- DB31/T 714-2025假肢和矫形器装配机构服务规范
- T/CASME 1933-2025建筑物纠倾加固施工技术规范
- T/CAOE 75-2024牡蛎徐氏拟裸茎吸虫荧光定量PCR检测方法
- 供应商分级管理流程SOP-含分级标准和差异化管理策略
- 学校消防安全工作计划工作计划
- 氧气清洗测试题目及答案呈现
- 采购计划编制流程SOP-含计划表和预算对照表
- 《广而告之》教学设计-2026-2027学年鲁教版(五四学制)(新教材)初中美术七年级上册
- 围手术期血糖管理的专家共识
- 柔性传感器课件
- 2026年石油化工设备检维修市场调研报告
- 2025年顺丰月结合同合同范本分享
- 【高中语文】《春江花月夜》课件+统编版高二语文选择性必修上册
- 2025-2026学年华中师大版(2024)小学体育与健康一年级全一册《应急电话学会打》教学设计
- 甘肃专职消防管理办法
- 《青少年户外运动技能等级划分及评定》
- 2025年宜都市总工会公开招聘乡镇工会协理员3人考试备考试题及答案解析
- (完整)营养指导员理论知识考核试题库(含答案)
- 医院危化品安全知识培训课件
评论
0/150
提交评论