文档详情

大型数据库实验报告(实验八)

第***
实名认证
店铺
DOC
567KB
约10页
文档ID:57509952
大型数据库实验报告(实验八)_第1页
1/10

课程实验报告课程实验报告(实验 8)课程名称课程名称 大型数据库大型数据库 专业班级专业班级 软件软件 姓姓 名名 学学 号号 指导教师指导教师 计算机学院计算机学院实验教学考核和成绩评定办法实验教学考核和成绩评定办法1.课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行实验成绩不 合格者,不能参加课程考试,待补做合格后方能参加考试 2.单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验3.实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验 态度、表现) ;3)实验报告;权重分别为 0.2 、0.4 、 0.4;原则上根据上述三个 方面进行综合评定学生未取得 1)和 2)项成绩时,第 3)项成绩无效 4.实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出 综合成绩,反馈实验中出现的问题实验成绩在教师手册中有记载实验报告主要内容实验报告主要内容一. 实验目的 二. 实验仪器及设备 三. 实验原理 四. 实验步骤 五. 实验记录及原始记录 六. 数据处理及结论 七. 实验体会(可选项)注:1. 统一采用 A4 纸, (正文采用宋体五号字)或手写,右侧装订。

2. 实验类别指验证、演示、综合、设计、创新(研究) 、操作六种类型实验3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事实、概念或理论)的实验4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验实验题目实验题目实验八实验八 存储过程、函数、程序包和触发器存储过程、函数、程序包和触发器实验室实验室机房机房 9202实验时间实验时间2016 年年 5 月月 17 日日 实验类别实验类别设计设计同组人数同组人数1成成 绩绩指导教师签字:指导教师签字:【【实验目的实验目的】】(1)掌握存储过程的编辑及调用方法;(2)掌握函数的编辑及调用方法;(3)掌握程序包的编辑及调用方法;(4)掌握 DML 触发器的创建及应用实验原理实验原理】】1. 存储过程 2. 函数 3. 程序包 4. 触发器【【实验内容实验内容】】一、存储过程、函数和程序包一、存储过程、函数和程序包[设计编程设计编程 1]假若有一个学生成绩管理系统,其中有一个学生成绩表 stu_scores_XXX(学号,课程号,成绩,录入时间) ,其中课程号的第 3 位代表课程类型(1:必修 2:考查 3:选修)。

且要求一个学生的某一门课程只能有一个成绩1)现要求设计学生成绩表 stu_scores_XXX 的表结构及约束,表结构中应至少包含以上列出的字段,设计完成后创建该表基本任务基本任务(2)编写程序包 pkg_score_XXX,该程序包应至少提供以下功能:教师可向学生成绩表中录入学生的考试成绩,在录入记录时要求对可能出现的异常进行处理教师可根据学号和课程号,查询出该某个学生某门课程的成绩,并返回对应记录当输入某课程的课程号后,可查询出该课程的课程类型(1:必修 2:考查 3:选修);当输入一个百分制成绩,可返回其五级分制成绩(优、良、中、及、不及格) ;当输入某个学生的学号时,可查询出该生的成绩信息及课程类型,要求必修课输出百分制成绩,选修课或考查课输出五分制成绩包规范(包头)代码:包规范(包头)代码:create or replace package pkg_score_221 isfunction course_type_221(cid char)return nvarchar2;function getgreade(sid number,cid char)return number;function getfive_score(grd number)return char;procedure insert_data(sid number,cid char,grd number,prd varchar2);procedure sele_stuscore_221(sid number);end pkg_score_221;包体代码:包体代码:create or replace package body pkg_score_221ISfunction course_type_221(cid char) return nvarchar2 ISv_ctype nvarchar2(10);v_str char(1);beginv_str:=substr(cid, 3, 1); case v_strWHEN '1' THEN v_ctype:='必修课'; WHEN '2' THEN v_ctype:='考查课'; WHEN '3' THEN v_ctype:='选修课'; elsev_ctype:='课程类型错误';end case;return v_ctype;end course_type_221;function getgreade(sid number,cid char)return numberiscid1 number;beginselect grade into cid1 from stu_scores_221where stuid=sid and courseid=cid;return cid1;end getgreade;function getfive_score(grd number)return charisss nvarchar2(10);BEGIN CASE WHEN grd>=90 and grd=80 and grd=70 and grd=60 and grd<70 THEN ss:='及格';ELSE ss:='不及格'; end case;return ss;end getfive_score;procedure sele_stuscore_221(sid number) ISBEGIN FOR i IN (select * from stu_scores_221 where stuid=sid) LOOPIF course_type_221(i.courseid) ='必修课' THEN dbms_output.put_line('学号:'|| i.stuid || ' 课程:'||i.courseid||' 课程类型:'||course_type_221(i.courseid)||' 成绩:'||i.grade);ELSEdbms_output.put_line('学号:'|| i.stuid || ' 课程:'||i.courseid||' 课程类型:'||course_type_221(i.courseid)||' 成绩:'||getfive_score(i.grade));END IF;END LOOP;END sele_stuscore_221;procedure insert_data(sid number,cid char,grd number,prd varchar2)ISnum_null_221 exception;Pragma exception_init(num_null_221,-1400);BEGININSERT INTO stu_scores_221(stuid,courseid,grade,prodession)VALUES(sid,cid,grd,prd);commit;EXCEPTIONWHEN DUP_VAL_ON_INDEX THENdbms_output.put_line ('该学生信息已存在');WHEN num_null_221 THENdbms_output.put_line('违反了非空约束!');END insert_data;END pkg_score_221;(3)试编写程序块分别调用测试程序包中的公有存储过程。

插入数据:利用学号查询信息:二、二、触发器触发器[设计编程设计编程 2]假若在员工考勤系统中有一个员工考勤表 empl_kq_XXX,其表中的列内容要求如表 1 所示:表 1 员工考勤表 empl_kq_xxx名称备注考勤序号主键员工编号考勤类型可取值 “缺勤” 、 “迟到” 、 “早退” 、 “病假” 、 “事假”记录者编号记录日期1)设计员工考勤表 empl_kq_XXX 的表结构及约束,并创建该表2)要求考勤序号列的值是能够自动生成的有序值3)要求用户在向员工考勤表 empl_kq_XXX 中录入考勤记录时,不用输入考勤序号,该列值在新记录录入时可由系统自动生成。

下载提示
相似文档
正为您匹配相似的精品文档