资源描述
课程实验报告(实验8)课程名称 大型数据库 专业班级 软件 姓 名 学 号 指导教师 计算机学院实验教学考核和成绩评定办法1 课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行。实验成绩不合格者,不能参加课程考试,待补做合格后方能参加考试。2 单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验。3 实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验态度、表现);3)实验报告;权重分别为0.2 、0.4 、 0.4;原则上根据上述三个方面进行综合评定。学生未取得1)和2)项成绩时,第3)项成绩无效。4 实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出综合成绩,反馈实验中出现的问题。实验成绩在教师手册中有记载。实验报告主要内容一 实验目的 二 实验仪器及设备三 实验原理四 实验步骤五 实验记录及原始记录六 数据处理及结论七 实验体会(可选项)注:1. 统一采用A4纸,(正文采用宋体五号字)或手写,右侧装订。2. 实验类别指验证、演示、综合、设计、创新(研究)、操作六种类型实验。3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事实、概念或理论)的实验。4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验。5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验。教学f实验题目实验八 存储过程、函数、程序包和触发器实验室机房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 IS v_ctype nvarchar2(10); v_str char(1); begin v_str:=substr(cid, 3, 1); case v_str WHEN 1 THEN v_ctype:=必修课; WHEN 2 THEN v_ctype:=考查课; WHEN 3 THEN v_ctype:=选修课; else v_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 charis ss nvarchar2(10); BEGIN CASE WHEN grd=90 and grd=80 and grd=70 and grd=60 and grd70 THEN ss:=及格; ELSE ss:=不及格; end case;return ss;end getfive_score;procedure sele_stuscore_221(sid number) IS BEGIN FOR i IN (select * from stu_scores_221 where stuid=sid) LOOP IF course_type_221(i.courseid) =必修课 THEN dbms_output.put_line(学号:| i.stuid | 课程:|i.courseid| 课程类型:|course_type_221(i.courseid)| 成绩:|i.grade); ELSE dbms_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) IS num_null_221 exception; Pragma exception_init(num_null_221,-1400);BEGIN INSERT INTO stu_scores_221(stuid,courseid,grade,prodession) VALUES(sid,cid,grd,prd); commit; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN dbms_output.put_line (该学生信息已存在); WHEN num_null_221 THEN dbms_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中录入考勤记录时,不用输入考勤序号,该列值在新记录录入时可由系统自动生成。教学f
展开阅读全文